Clases y Objetos (a partir de PHP 5)

Las Bases

clase

Cada definición de clase empieza con la palabra "class", seguida por un nombre de clase, el cual puede ser cualquier nombre que no esté en la lista de palabras reserved en PHP. Seguida por un par de llaves curvas, las cuales contienen la definición de los miembros de la clase y los métodos. Una seudo variable $this está disponible cuando un método es llamado dentro del contexto de un objeto. $this es una referencia al objeto que se está usando (usualmente el objeto al que el método pertenece, pero puede ser otro objeto, si un método es llamado estáticamente desde el contexto de un objeto secundario). Este es ilustrado en el siguiente ejemplo:



<?phpclass A{
    function 
foo()
    {
        if (isset(
$this)) {
            echo 
'$this is defined (';
            echo 
get_class($this);
            echo 
")\n";
        } else {
            echo 
"\$this is not defined.\n";
        }
    }
}

class 
B{
    function 
bar()
    {
        
A::foo();
    }
}
$a = new A();$a->foo();A::foo();$b = new B();$b->bar();B::bar();?>

El resultado del ejemplo seria:
$this is defined (a)
$this is not defined.
$this is defined (b)
$this is not defined.



Ejemplo 19-1. Definición simple de una clase
<?phpclass SimpleClass{
    
// member declaration
    
public $var 'a default value';

    
// method declaration
    
public function displayVar() {
        echo 
$this->var;
    }
}
?>

Nuevo objeto

Para crear una instancia de un objeto, un nuevo objeto debe ser creado y asignado a una variable. Un objeto siempre será asignado cuando se crea un objeto nuevo a menos que el objeto tenga un constructor definido que arroje unaexcepción en caso de error.

Ejemplo 19-2. Creando una instancia
<?php
$instance 
= new SimpleClass()?>

Cuando se asigna una instancia de un objeto previamente creado a una nueva variable, la nueva variable accesará la misma instancia que la del objeto a la que fue asignada. Este comportamiento es el mismo cuando se pasan instancias a una función. Una nueva instancia de un objeto previamente creado puede ser hecho clonandolo.

Ejemplo 19-3. Asignamiento de Objeto
<?php
$assigned   
=  $instance;$reference  =& $instance;
$instance->var '$assigned will have this value';
$instance null// $instance and $reference become null
var_dump($instance);var_dump($reference);var_dump($assigned);?>

El resultado del ejemplo seria:
NULL
NULL
object(SimpleClass)#1 (1) {
   ["var"]=>
     string(30) "$assigned will have this value"
}

Extendiendo objetos

Una clase puede heredar métodos y miembros de otra clase usando la palabra 'extends' en la declaración. No es posible extender de múltiples clases, una clase puede heredar solo de una clase base.
Los métodos de herencia y sus miembros pueden ser evitados, redeclarandolos con el mismo nombre con el que los definió la clase padre, a menos que la clase padre haya definido un método como final. Es posible accesar a los métodos o miembros redeclarados haciendo referencia a ellos con parent::

Ejemplo 19-4. Herencia de SimpleClass
<?phpclass ExtendClass extends SimpleClass{
    
// Redefine the parent method
    
function displayVar()
    {
        echo 
"Extending class\n";
        
parent::displayVar();
    }
}
$extended = new ExtendClass();$extended->displayVar();?>

El resultado del ejemplo seria:
Extending class
a default value

No response to “Clases y Objetos (a partir de PHP 5)”