Ver Mensaje Individual
  #9 (permalink)  
Antiguo 12/09/2006, 14:26
soonye
 
Fecha de Ingreso: octubre-2005
Mensajes: 85
Antigüedad: 18 años, 6 meses
Puntos: 0
Bueno ojala te sirva...............

Cita:
Iniciado por B** Ver Mensaje
Hablando del primer codigo que puso gatorV
Si solo usas public function metodo.... lo toma como un metodo estatico... por default no es asi?
No, si no colocas la palabra reservada static tu funcion sera normal, mas no estatica.

Cita:
Iniciado por B** Ver Mensaje
Otra duda... que pasa si a ese mismo codigo ....al metodo setprefix no le pones que sea estatico... que error marca o que?.. no podrias alterar a las demas instancias?
Bueno sino le colocas la palabra static tendrias que implementarla asi:


Código PHP:
class talker {
     private 
$prefix '';//aqui hubo cambio
     
public function __construct() {}

     public function 
setPrefix$prefix ) {//aqui hubo cambio
          
$this->prefix $prefix;//aqui hubo cambio
     
}

     public function 
talk$text ) {
          if( !empty( 
$this->prefix ) ) echo $this->prefix;//aqui hubo cambio
          
echo get_class() . "=>" $text;
     }

Y lo malo viene aqui:

Código PHP:
class fulano extends talker {}
class 
sutano extends talker {}

$fulano = new fulano();
$sutano = new sutano();
$fulano->setPrefix"-----------\t" );//se agrego
$sutano->setPrefix"-----------\t" );//se agrego
$fulano->talk"hola" );
$sutano->talk"como estas?" );

//PARA OBTENER LO MISMO 
Bueno es decir por cada instancia tendriamos que llamar al metodo setPrefix para que haga la impresion.

Cita:
Iniciado por B** Ver Mensaje
Es que aun no lo termino de entender.. un metodo estatico sirve para modificar cualquier instancia? le puedes especificar cual ? o afecta a todas las instancias de la clase?
Muchas Gracias de antemano
Bueno lo que te puedo decir es que un dato estatico es una variable miembro que no esta asociado a un objeto(instancia) de una clase, sino que se asocia a la clase misma, no hay una copia del dato para cada instancia(objeto), sino un sola copia que es compartida por todos las instancias(objetos) de la clase
otro ejemplo:
Código PHP:
class Cliente{
    public static 
$cont1 0;
    public 
$cont2 0;
    
    public function 
__construct(){
        
self::$cont1++;
        
$this->cont2++;
    }
    
    public function 
devuelve(){
        
$a = array(self::$cont1,$this->cont2);
        return 
$a;    
    }    
}

$cliente1 = new Cliente();
$cliente2 = new Cliente();
$cliente3 = new Cliente();
$contadores $cliente3->devuelve();

echo 
"<b>Valor del contador estatico</b>:    {$contadores[0]}<br>";
echo 
"<b>valor del contador normal</b>:       {$contadores[1]}"
Ah si estoy mal en algo, por favor diganmelo que les estare muy agradecido