Tengo un problema que me tiene algo inquieto, sea este ejemplo de sobrecarga usando _call en php.
Código PHP:
n de la clase.Ver original
<?php class cochecito{ private $marca ; private $color ; private $pais ; private $potencia; private $vmax; private $precio; function __call($method, $arguments) { return; } return $this->$property;//$property es un resource, no puedo en este tipo de datos poner Sthis->nombre porque lo que quiero es que eexpanda lo escrito en $property } if ($prefix == "set") { $this->$property = $arguments[0]; } }//fin del método } //fi
Código PHP:
Ver original
<?php require_once('onewhocalls.php'); ?> <html> <head> <title>probandometodomagicocall</title> </head> <body> <?php $one=new cochecito(); $one->setmarca("Ferrari"); $one->setcolor("rojo"); $one->setprecio("160000"); echo "la marca del coche es:"." ".$one->getmarca()."<br>"; echo "el color del coche es:"." ".$one->getcolor()."<br>"; echo "el precio del capricho es:"." ".$one->getprecio()."<br>"; ?> </body> </html> ?>
Funciona perfectamente pero me iniquieta que llamemos a $property como $this->$property.
mis pensamientos son estos:
1) al no estar declarado este atributo en la clase sino en un método, no se puede usar $this->
2)en caso de poder usarse sería $this->property y no $this->$property.
3) intuyo que , al ser un RESOURCE, es decir, que el valor sale de realizar una operación, no estamos ante un atributo sino ante un método, y por tanto nos referimos a el como $this->nombre del método, que en este caso es $property, pero claro, en este caso, si fuera cierto lo que digo, ¿por qué a veces nos referimos a él por $this->$property y a veces por $property? ¿cómo funcionan los booleanos isset y empty en el interior de las clases? en el manual explica que se introducen variables mixtas ....
Si alguien puediera arrojarme algo de luz lo agradecería, no sé por qué me ha dado por fijarme en ese detalle pero....lo he hecho.
GRACIAS