Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - WarezD@rK

Páginas: 1 [2] 3 4 ... 11
16
Sistemas Operativos / Re:[OPINION] Windows 7
« en: 21 de Febrero de 2010, 15:25:39 pm »
Yo uso Windows 7 - Professional de 64 bits y va muy bien.
Para trabajar no tengo ningún problema.

Aunque yo no me he gastado 105 euros, para pagar eso prefiero Linux, lo que pasa es que en mi centro nos han regalado un montón de licencias de Microsoft.

18
PHP / Re:[AYUDA] Alertas
« en: 21 de Febrero de 2010, 14:56:27 pm »
Si la alerta es con Javascript, una vez el usuario haya leído la alerta, puedes borrarla.

# Consulta a la base de datos
# Muestras la alerta alert('bla bla bla');
# Eliminas la alerta

El usuario la verá igual y al ser una alerta Javascript, no desaparecerá hasta que no acepte.

19
PHP / Re:[AYUDA] Redireccionar
« en: 21 de Febrero de 2010, 14:52:09 pm »
Gracias west, voi a buscar por el navegador de PHPeros y Google haber si encuentro algo
que me sirva :$.

A ver, con un iframe lo que haces es mostrar otra página sin que el usuario se de cuenta.

Por ejemplo:

Tienes una página que se llama www.siquillote.com y otra micasa.webcindario.com.
Pones el iframe en www.siquillote.com apuntando a micasa.webcindario.com y cuando el usuario entre en www.siquillote.com, verá la otra página.

Si lo que tienes pensado es que el usuario entre en micasa.webcindario.com y muestre como si estuviera en www.google.com lo llevas un poco claro. Qué quieres, estafar a alguien?

20
PHP / Re:[AYUDA] Redireccionar
« en: 20 de Febrero de 2010, 23:45:28 pm »
Entonces con un iframe.

21
PHP / Re:[AYUDA] Redireccionar
« en: 20 de Febrero de 2010, 22:46:34 pm »
Redireccionamiento transparente?
Explícate un poco más y dinos qué recursos tienes, porque la mejor opción es apuntar el dominio al servidor.

22
PHP / Re:[ayuda]variables dentro de una funcion.
« en: 20 de Febrero de 2010, 22:44:07 pm »
Porque al incluir la página de variables dentro de una función, estas se vuelven visibles solo dentro de la función.

23
PHP / Re:[Ayuda] panel login
« en: 20 de Febrero de 2010, 22:41:32 pm »
Depende del foro que uses.
Para el login apuntas el formulario a la página de inicio de sesión del foro y para mostrar los datos, accedes a la cookie que el foro envía al usuario.

24
Si necesitas permiso de tus padres por ser menor de edad es por algo.
Crea un dominio gratuito en http://www.co.cc y confórmate hasta que cumplas los 18.

25
PHP / Re:[Aporte] Errores
« en: 20 de Febrero de 2010, 19:45:31 pm »
También podéis poner:

Código: [Seleccionar]
ErrorDocument 404 "Error 404"
Y en vez de redirigiros a la página de error, muestra ese mensaje.

26
Charlas / Offtopic / Re:[Aporte] Ortografía
« en: 20 de Febrero de 2010, 14:42:56 pm »
Pos io escirvo mui vien i no se porke aveis habierto este ilo...

27
Los Retos PHPeros / Re:Reto #4 - Practicando con clases en PHP
« en: 20 de Febrero de 2010, 04:35:25 am »
Bueno, como prometí, ya he llegado a casa y voy a repasar los códigos de mara y west.
Veo que no hay muchos comentarios en el código. La verdad es que esta parte es muy importante porque ayuda a terceras personas a entender el algoritmo y en casos donde la clase es muy extensa, se vuelve algo indispensable, sobretodo en proyectos donde participan varias personas.

Me centraré exclusivamente en las clases que es de lo que trata el reto, los formularios es algo que tenemos más que aprendido y que domináis a la perfección.

Empezamos con la clase de mara:

He visto que has publicado el código y he podido probar tu clase. Como dije, era muy importante el control de errores y en este caso he encontrado un pequeño fallo con el tema de la división por 0. Es algo en lo que solemos fallar y no basta con comprobar si el código es numérico. Dividiendo 0 / 0 obtenemos este resultado:

Warning: Division by zero in /home/a7465051/public_html/calculadoraClass.php  on line 20

Veo que no has declarado las variables como privadas. Aunque no es ningún error te recomendaria por seguridad declararlas como privadas, ya que no va a ser necesario modificarlas desde fuera de la clase. También sobra la variable "$operacion", no es necesaria dentro de la clase. La variable que declares para utilizarla en la ejecución, no es necesaria declararla dentro:

Código: [Seleccionar]
<?php
private $numero1;
private 
$numero2;
private 
$resultado;
?>

Has entendido muy bien cómo funcionan las funciones dentro de una clase y los métodos para realizar las operaciones están muy bien:

Código: [Seleccionar]
<?php
public function sumar($xxnumero1$xxnumero2)
{
    
$this->resultado $xxnumero1 $xxnumero2;
    return 
$this->resultado;
}
?>

Por otro lado, no has creado un constructor y aunque no era estrictamente necesario, lo pedía para que viérais cómo funciona. En este caso sería:

Código: [Seleccionar]
<?php
function __construct()
{
    
$this->numero1 0;
    
$this->numero2 0;
    
$this->resultado 0;
}
?>

Te ha faltado una función que pedía para mostrar el resultado, que en este caso sería:

Código: [Seleccionar]
<?php
public function resultado()
{
    echo 
$this->resultado;
}
?>

En general, creo que has entendido bastante bien cómo funcionan las clases, aunque hubiese preferido que el control de errores fuese parte de la clase y no algo ajeno a ella, ya que el fin de las clases es reducir el código a la hora de trabajar con ellas. Me gustaría hacer otro reto un poco más difícil y ver cómo te desenvuelves con la programación orientada a objetos, seguro que lo harías bien.

Sigamos con la clase de west:

Veo que tú sí has pensado en la división entre 0. Es un detalle importante y un error bastante común. En ese aspecto todo bien.

Lo que no has entendido muy bien es para qué sirve el constructor y cómo se utiliza. El constructor sirve para establecer unos valores por defecto o ejecutar cierto algoritmo al crear el objeto que hace referencia a la clase. En este caso no debías pasarle ninguna variable a la función y sobra el ($numero1 = 0, $numero2 = 0) y tampoco era necesario comprobarlas. Simplemente había que inicializar las variables:

Código: [Seleccionar]
<?php
function __construct()
{
    
$this->numero1 0;
    
$this->numero2 0;
    
$this->resultado 0;
}
?>

Debido al diseño de tu constructor, su función "choca" con la función numeros(), ya que hacen algo parecido y es un poco paradójico. Hay dos opciones, establecer los valores al crear el objeto (new Calculadora(5, 3)) o establecerlos utilizando un método (numeros(5, 3)). En este caso pedía hacerlo con un método y tú lo has hecho de las dos formas.

He visto que las operaciones las realiza en un mismo método y mi intención era que fuese un método por cada operación, de esta manera sería más fácil ver el funcionamiento de la clase.

El método para mostrar el resultado perfecto.

En general creo que está bastante bien teniendo en cuenta que no te hacía mucha gracia la programación orientada a objetos y sería interesante verte programar alguna clase más.



A continuación os haré un boceto de cómo tenía pensado yo este reto. No es que sea lo correcto, porque hay muchas formas de programar, pero es lo que tenía en mente y en vez de hacerlo con dos operantes, lo haré compatible con más de dos, ya que sería un poco repetitivo y así variamos un poco. Veamos qué lío me sale:

Código: [Seleccionar]
<?php
/*
Clase Calcular para PHPeros.net
Reto #4: Practicando con clases en PHP
*/

class Calcular
{
# Declaramos 3 variables
# privadas para nuestra clase.
private $operantes;
private $resultado;
private $error;

# Creamos un constructor
# que las inicialice.
function __construct()
{
$this->operantes = array(105);
$this->resultado 0;
$this->error false;
}

# Diseñamos un método PRIVADO
# para mostrar el error que solo
# podrá ser utilizado dentro de nuestra clase.
private function verError()
{
return "Error: ".$this->error;
}

# Diseñamos un método para establecer
# los operantes y comprobar su tipo.
public function operantes($xOperantes)
{
# Creamos una variable boleana
# de control que devolverá TRUE
# en caso de que algún valor no
# sea numérico.
$xHayError false;

# Comprobamos si los valores
# se encuentran dentro de una array.
if(is_array($xOperantes))
{
# Comprobamos si hay más de 1
# operante, lógicamente.
if(count($xOperantes) >= 2)
{
# Recorremos los valores uno a uno
foreach($xOperantes as $xNumero)
{
# Comprobamos si son del tipo numérico.
if(!is_numeric($xNumero))
{
$xHayError true;
break;
}
}

# Comprobamos si ha habido algún error
# al recorrer el array.
if($xHayError)
{
$this->error "Debes introducir exclusivamente valores numéricos.";
echo $this->verError();
}
else
{
$this->operantes $xOperantes;
}
}
else
{
$this->error "Debe haber como mínimo 2 operantes.";
echo $this->verError();
}
}
else
{
$this->error "Para hacerlo más divertido, los operantes deben estar dentro de un array.";
echo $this->verError();
}
}

# Diseñamos un método que recorra
# el array y sume sus valores.
public function sumar()
{
# Si no ha ocurrido ningún error
# al establecer los operantes.
if(!$this->error)
{
# Inicializamos el resultado a 0.
$xResultado 0;

# Recorremos el array y realizamos
# la operación correspondiente al método.
foreach($this->operantes as $xNumero)
{
$xResultado $xResultado $xNumero;
}

# Almacenamos el resultado en
# la variable global.
$this->resultado $xResultado;
}
}

# Diseñamos un método que recorra
# el array y reste sus valores.
public function restar()
{
# Si no ha ocurrido ningún error
# al establecer los operantes.
if(!$this->error)
{
# Inicializamos el resultado con
# el doble del primer valor, de manera
# que al restar la primera vez, obtengamos
# el primer valor íntegro.
$xResultado $this->operantes[0] * 2;

# Recorremos el array y realizamos
# la operación correspondiente al método.
foreach($this->operantes as $xNumero)
{
$xResultado $xResultado $xNumero;
}

# Almacenamos el resultado en
# la variable global.
$this->resultado $xResultado;
}
}

# Diseñamos un método que recorra
# el array y multiplique sus valores.
public function multiplicar()
{
# Si no ha ocurrido ningún error
# al establecer los operantes.
if(!$this->error)
{
# Inicializamos el resultado a 1
# para que al multiplicar el primer
# operante, devuelva su valor íntegro.
$xResultado 1;

# Recorremos el array y realizamos
# la operación correspondiente al método.
foreach($this->operantes as $xNumero)
{
$xResultado $xResultado $xNumero;
}

# Almacenamos el resultado en
# la variable global.
$this->resultado $xResultado;
}
}

# Diseñamos un método que recorra
# el array y divida sus valores.
public function dividir()
{
# Creamos una variable de control
# que devolverá TRUE en case de que
# algún operante sea 0.
$xHayError false;

# Si no ha ocurrido ningún error
# al establecer los operantes.
if(!$this->error)
{
# Inicializamos el resultado
# con el primer operante elevado
# al cuadrado, para que devuelva
# su valor íntegro.
$xResultado $this->operantes[0] * $this->operantes[0];

# Recorremos el array y realizamos
# la operación correspondiente al método.
foreach($this->operantes as $xNumero)
{
# Comprobamos si algún
# operante es igual a 0.
if($xNumero != 0)
{
$xResultado $xResultado $xNumero;
}
else
{
$xHayError true;
break;
}
}

if($xHayError)
{
$this->error "No puedes dividir valores entre 0.";
echo $this->verError();
}
else
{
# Almacenamos el resultado en
# la variable global.
$this->resultado $xResultado;
}
}
}

# Diseñamos un método para
# devolver el resultado.
public function verResultado()
{
# Si no ha ocurrido ningún error
# al establecer los operantes.
if(!$this->error)
{
return "El resultado es: ".$this->resultado;
}
}
}
?>

De esta forma, si lo que queremos es, por ejemplo, dividir múltiples valores, su ejecución sería tan sencilla como:

Código: [Seleccionar]
<?php
$operacion 
= new Calcular();
$operacion->operantes(array(10025));
$operacion->dividir();
echo 
$operacion->verResultado();
?>

Incluye el control de errores, por lo que no es necesario comprobar nada al utilizar la clase, todo se genera desde dentro.

Os adjunto mi clase.



Gracias por vuestro interés en mi reto y espero que haya sido instructivo.
Un saludo :)

28
PHP / Re:[CLASE] Consultas a MySQL
« en: 19 de Febrero de 2010, 21:23:12 pm »
Entonces sería correcto...?:

class Miclase {
var 
$saludo = &#39;hola&#39;;
function saludar() {
echo 
$this->saludo;
function 
despedirse() {
$despedida = &#39;adios&#39;;
echo $despedida;
}
}

Es muy chorra, pero no se me ocurría otro ejemplo

No es correcto del todo. Las variables suelen incializarse sin valor. Para añadir un valor por defecto está la función __construct(). En el reto he visto que no te ha quedado muy claro, cuando llegue a casa esta noche repasaré vuestros código en el hilo de retos.

Tu ejemplo con un constructor sería:

Código: [Seleccionar]
<?php
class Miclase
{
    var 
$saludo;
    var 
$despedida;

    
# La función contruct sirve para establecer valores por defecto.
    # eso quiere decir que no es necesario llamar a la función
    # para que se ejecute. Lo hace sola al crear el nuevo objeto.
    # Al escribir new Miclase(), la función construct se ejecuta por defecto.

    
function __construct()
    {
        
$this->saludo "Hola";
        
$this->despedida "Adiós";
    }

    function 
saludar()
    {
        echo 
$this->saludo;
    }

    function 
despedirse()
    {
        echo 
$this->despedida;
    }
}
?>

29
PHP / Re:[CLASE] Consultas a MySQL
« en: 19 de Febrero de 2010, 14:56:07 pm »
Ah, ok, gracias por poner ese reto. De todas manera de vuelta al tema:
cuando se debe utilizar $this-> y cuando no? Creo que lo entendi mas o menos pero una explicacion explicita no haria daño

En el tutorial lo explico.

$this->variable se utiliza siempre para leer o modificar las variables de la clase, las que pones al principio (var variable o private variable).

Si declaras "var $miVariable" o "private $miVariable", para trabajar con ella debes utilizar $this->miVariable, ya que te estás refiriendo a la variable de esa clase. This en inglés es este/a.

Digamos que son las variables "globales" de la clase. Por ejemplo, en Visual Basic en vez de $this-> se utiliza Me (Me.miVariable).

30
Los Retos PHPeros / Re:Reto #4 - Practicando con clases en PHP
« en: 19 de Febrero de 2010, 14:32:15 pm »
Está bastante bien, aunque veo un par de cosas mejorables en tu código, pero esperaré a ver si alguien más se anima a participar.

Páginas: 1 [2] 3 4 ... 11