Cada definición de case 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 case 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). Est es ilustrado en el
siguiente ejemplo:
Ejemplo 19-1. Definición simple de una clase
<?php class SimpleClass { // member declaration public $var = 'a default value';
// method declaration public function displayVar() { echo $this->var; } } ?>
|
|
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 una excepció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"
} |
|
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
<?php class 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 |
|