Lo Basico Clases
Toda definicion de clase comienza con la palabra
class, seguido por el nombre de la clase, el cual puede ser cualquier nombre que no sea una palabra reservada en PHP. Seguido por un par de de llaves, las cuales contienen la definicion de las propiedades y metodos de la clase. Dentro de cada metodo, excepto para metodos estaticos, se dispone de una pseudo variable
$this.
$this es una referencia a la misma instancia que llama el metodo.
Every class definition begins with the keyword class, followed by a class name, which can be any name that isn't a reserved word in PHP. Followed by a pair of curly braces, of which contains the definition of the classes members and methods. Within each method, except for static methods, a pseudo variable $this is available. $this is a reference to the same instance that called the method. Ejemplo 19-1. Definicion de una simple clase. Código PHP:
<?php
class SimpleClase
{
// Declaracion de Propiedad $var
public $var = 'un valor por defecto';
// Declaracion del metodo mostrarVar
public function mostrarVar() {
echo $this->var;
}
}
?>
Novedades
Para crear una instancia de un objeto, debe ser creado un objeto nuevo y asignado a este una variable. Un objeto siempre será asignado cuando se este creando un nuevo objeto a menos que el objeto tenga definido un constructor que arroje un error excepcional.
To create an instance of an object, a new object must be created and assigned to a variable. An object will always be assigned when creating a new object unless the object has a constructor defined that throws an exception on error. Ejemplo 19-2. Creando una instancia. Código PHP:
<?php
$instancia = new SimpleClase()
?>
Cuando estamos asignando una instancia ya creada de un objeto a una nueva variable, la nueva variable accedera a la misma instancia del objeto del cual fue asignada. Este comportamiento es el mismo cuando se pasan instancias a una funcion. Una nueva instancia de un objeto ya creado puede ser construido mediante clonacion.
When assigning an already created instance of an object to a new variable, the new variable will access the same instance as the object that was assigned. This behaviour is the same when passing instances to a function. A new instance of an already created object can be made by cloning it.
Ejemplo 19-3. Asignacion de Objetos Código PHP:
<?php
$asignado = $instancia;
$referencia =& $instancia;
$instancia->var = '$asignado tendra este valor';
$instancia = null; // $instancia y $referencia se convierte en null
var_basura($instancia);
var_basura($referencia);
var_basura($asignado);
?>
Este ejemplo mostrará la siguiente salida: Código PHP:
NULL
NULL
object(SimpleClase)#1 (1) {
["var"]=>
string(30) "$asignado tendra este valor"
}
Herencia (Extends)
Una clase puede heredar los metodos y propiedadees de otra clase utilizando la palabra reservada
extends en la declaracion de la clase. No ses posible extensiones multiple de clases (herencia multiple), una clase puede ser solo heredada de una clase base.
A class can inherit methods and members of another class by using the extends keyword in the declaration. It is not possible to extend multiple classes, a class can only inherit one base class.
Las propiedades y metodos heredados pueden ser sobrecargados, a menos que la clase madre tenga definido un metodo como
final, redeclarando con el mismo nombre definido en la clase madre. Es posible acceder a las propiedades o metodos sobrecargados referenciando con
parent:: The inherited methods and members can be overloaded, unless the parent class has defined a method as final, by redeclaring them within the same name defined in the parent class. It is possible to access the overloaded method or members by referencing them with parent:: Ejemplo 19-4. Una Simple Clase Heredada Código PHP:
<?php
class ClaseExtendida extends SimpleClase
{
// Se redefine el metodo madre
function mostrarVar()
{
echo "Clase extendida\n";
parent::mostrarVar();
}
}
$extendida = new ClaseExtendida();
$extendida->mostrarVar();
?>
Este ejemplo mostrará la siguiente salida: Código PHP:
Clase extendida
un valor por defecto