The New Cult of Dead Cow

February 21, 2007






Extends y New en PHP5

Filed under: Programacion, PHP, php-ORM, Web

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:

3 Comments »

The URI to TrackBack this entry is: http://necudeco.blogsome.com/2007/02/21/extends-y-new-en-php5/trackback/

  1. y con eso se cierra la presencia del protected abstract createObject en el ORM ^^

    Comment by luismarcel — February 22, 2007 @ 11:33 am

  2. 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

  3. 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

RSS feed for comments on this post.

Leave a comment

Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>























Get free blog up and running in minutes with Blogsome
Theme designed by B A Khan