Las Bases

clase

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:

<?php
class 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

<?php
class 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 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"
}

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

<?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

Hosting by: hurra.com
Generated: 2007-01-26 18:01:09