Algo que no es muy com&úacute;n ver en PHP4 es la programación Orientada a objetos y sin embargo puede ser muy &úacute;til, sobre todo a la hora de encapsular nuestras operaciones en la base de datos en una &úacute;nica clase que facilite la escalabilidad de la misma.
Ejemplo de una clase PHP4:
-
class MyClase{
-
var _variable;
-
function MyClase($a=0){
-
$this->_variable=$a;
-
}
-
-
function DaVariable(){
-
return $this->_variable;
-
}
-
}
El constructor de una clase PHP4 es igual al nombre de dicha clase. Solo puede haber una función con dicho nombre.
Para construir una clase PHP4 utilizaremos la palabra reservada new.
-
// cremos un objeto de la clase MyClase
-
$miObjeto = new MyClase(5);
-
// Llamamos al metodo DaVariable() de miObjeto y mostramos
-
// en pantalla el resultado.
-
echo $miObjeto->
DaVariable();
Dentro de una clase se usa la variable $this para llamar a las variables y métodos de la instancia actual de la clase. También podemos ver los símbolos “->” estos se usan para definir la variable o método al que queremos acceder, asi si tenemos un objeto $poo creado de una clase Cpoo el cual contiene una función llamada DiAlgo() para llamar a dicha función haremos $poo->DiAlgo() .
También podemos acceder directamente a los métodos de una clase (llamada a métodos estáticos) usando los símbolos “::”. este es el operador de resolución de contexto y también lo podremos usar para acceder a clases heredadas.
-
Cpoo::DiAlgo();
Las Clases PHP4 Pueden heredar, para ello se usa la palabra reservada extends. PHP 4 no llama constructores de la clase base automáticamente desde un constructor de una clase derivada. Por lo que es responsabilidad nuestra llamarlo si lo necesitamos.
-
Class Padre{
-
function Padre(){}
-
funcion HazPadre(){}
-
}
-
-
Class Hija extends Padre{
-
function Hija(){}
-
function HazHija(){}
-
}
-
-
$a = new Hija();
-
$a->HazHija();
-
$a->HazPadre();
Asimismo tal y como existía $this para acceder a las variables y métodos de el objeto actual existe la palabra reservada parent para acceder a los métodos de una clase padre sin necesidad de saber de que clase se trata.
-
Class Padre{
-
function Padre(){}
-
function HazPadre(){}
-
}
-
-
Class Hija extends Padre{
-
function Hija(){}
-
function HazHija(){
-
// Esto llamaria a HazPadre solo para la clase Padre
-
Padre::HazPadre();
-
// Esto llamaria a HazPadre de la clase padre sin
-
// importar cual sea
-
parent::HazPadre();
-
}
-
}
En la herencia también tenemos que la clase padre puede tener una función con el nombre del constructor de la clase hija. En este caso la función de la clase padre Funcionara como constructor de la clase Hija.
-
class A{
-
function A(){}
-
function B(){}
-
}
-
-
class B extends A {
-
function hazAlgo();
-
}
-
-
// el constructor que se esta usando corresponde
-
// con la funcion B de la clase A
-
$obj = new B();
Para ayudar a la con los problemas de serialización las clases pueden tener las “funciones mágicas” (como las define el manual de PHP) __sleep y __wakeup que serán ejecutadas por serialize() y unserialize() respectivamente para que haga las operaciones que crea necesarias.
-
class A{
-
function A(){}
-
function __sleep(){
-
// operaciones antes de serializar
-
}
-
-
function __wakeup(){
-
// operaciones despues de desserializar
-
}
-
}
Las clases PHP4 y sus métodos aceptan el uso de variables y clases por referencia.
Se pueden instanciar clases usando el operador “&” para crearlas como referencia, con esto el nuevo objeto apuntara a otro existente de la misma clase en lugar de crear una nueva copia (aun así llama al constructor), en este caso $this apuntara a las variables y métodos del primer objeto creado
-
$a= &new MyClase();
Por ultimo, en PHP4 no existen destructores para la clase. Esta se destruye al finalizar su ciclo de vida (ciclo de vida normal de una pagina PHP).
Como truco podemos usar register_shutdown_function() para llamar a una función al final del ciclo de la pagina que actué como destructor, aunque normalmente no es necesario usar destructores.