Cita:
Iniciado por B** 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** 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** 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