Extends y New en PHP5
Trabajando en phpORM, se dio la necesidad de poder crear un objeto del tipo clase Hija desde el codigo de la clase ORM
phpORM dispone de una clase base llamada ORMBase, sin embargo esta clase es abstracta, es decir, no puede ser utilizada directamente. Para usar phpORM se debe crear una clase que herede de phpORM.
Este codigo podria servir en cualquier situacion que debamos crear una clase heredable ( abstracta ) y necesitemos crear objetos sin saber el nombre de las clases Hijas.
<?php
abstract class Base
{function nuevo()
{
$className = get_class($this);
return new $className();
}
function quiensoy()
{
echo “soy Base\n”;
}}
class Hija extends Base
{
function quiensoy()
{
echo “soy hija\n”;
}}
$a = new Hija();
$b = $a->nuevo();$b->quiensoy();
?>
La funcion nuevo dentro de la clase Base, es la que se encarga de crear el objeto. Este objeto sera siempre del mismo tipo que el objeto que hizo la llamada.
Technorati Tags: php herencia
y con eso se cierra la presencia del protected abstract createObject en el ORM ^^
Comment by luismarcel — February 22, 2007 @ 11:33 am
Hay que tener nada más mucho cuidado cuando usemos get_class(); pues supongamos tenemos..
class extendClass extends myClass
para esta clase get_class devuelve bajo linux extendClass
Comment by daniel rosiles — August 20, 2007 @ 7:12 am
eyy !! tu post a comment, corta los comentarios!, … en fin.. os decia que en el caso de windows get_class devuelve “extendclass” en minusculas, no respetando el case sensitive del nombre de la clase.. y eso puede joder un poco (a mi me jodio mucho) en fin..
Comment by daniel rosiles — August 20, 2007 @ 7:14 am