FAQ
Hola

Tengo una duda sobre las clases y queria preguntarles para saber si
alguien ha estado en la misma situacion o como se podria hacer. Estoy
programando unas clases, que van a tener los mismos metodos (enviar,
eliminar, cancelar, ...) pero se llamaran de distinta forma. Queria
para ahorra codigo, hacer unas comprobaciones en la db y segun que
tipo sea utilizar una clase u otra. Esto lo tengo mas o menos claro,
pero, como podria utilizar dinamicamente esto. Me explico con un
ejemplo

require_once("$nombreclase.php");

$manejador = new $nombreclase(); // Aqui es la duda, que me gustaria
llamar a la clase igual que su fichero, pero no se si asi funcionaria
$info = $manejador->enviar('rjrjrjr' );


vamos, a no tener que escribir el nombre fijo de la clase, sino que lo
llame segun su php. Si me dicen que no se puede, tendre que meterlo en
el codigo, con comprobaciones de $nombreclase y segun este, crear el
objeto u otro :(

Gracias.

Saludos

Search Discussions

  • J. Mauro Daino at Oct 16, 2011 at 3:14 pm
    2011/10/16 Anto [...]

    require_once("$nombreclase.php");
    >

    http://ar2.php.net/manual/es/language.oop5.autoload.php

    $manejador = new $nombreclase(); // Aqui es la duda, que me gustaria
    llamar a la clase igual que su fichero, pero no se si asi funcionaria
    http://ar2.php.net/manual/es/language.oop5.basic.php#example-157

    [...]

    Suerte.

    --
    J. Mauro Daino (tcc: jMd/jMdZ)
    google.com/profiles/maurodaino
  • Andrés G. Montañez at Oct 16, 2011 at 4:00 pm
    Hola Anto, más alla de el uso dinámico del lenguaje, lo más seguro es
    utilizar Reflection;
    con la cual puedes instanciar clases, preguntar que metodos tiene e
    incluso invocarlos.

    http://www.php.net/manual/es/book.reflection.php

    Saludos.

    --
    Andrés G. Montañez
    Zend Certified Engineer
    Montevideo - Uruguay
  • Carlos Medina at Oct 20, 2011 at 8:53 am
    Hola,
    pues debes hecharle un ojo a las "Design Patterns". Te recomiendo la
    fabrica. Esta clase se encargaria de instancear una classe segun el
    nombre que le des. Si quieres puedes usar un singleton para obtener una
    instancia de la clase fabrica


    class Fabrica
    {
    private static $instance = null;
    public function getInstance()
    {
    if( self::$instance === null)
    {
    self::$instance = new self;
    }
    }

    public function loadClass( $classname)
    {
    switch( strtoupper($classname))
    {
    case 'CLASEESPECIFICA':
    return new ClasseEspecifica();
    break;
    }
    }
    }

    interface Clase
    {
    function enviar();
    }

    // cualquiera de las clases llamadas por fabrica deben tener
    // en este caso el implements de la interfaz
    class ClasseEspecifica implements Clase
    {
    // reescribir el metodo.
    public function enviar()
    {
    echo "test";
    }
    }

    Uso:

    $fabrica = Fabrica::getInstance();

    $claseEspecifica = $fabrica->loadClass( 'classeespecifica' );

    $claseEspecifica->enviar();


    Creo que es correcto. Lo escribi de la memoria pero si no me falla es la
    manera mas elegante de solventar el problema. OOP!!!

    Saludos








    Am 16.10.2011 14:23, schrieb Anto:
    Hola

    Tengo una duda sobre las clases y queria preguntarles para saber si
    alguien ha estado en la misma situacion o como se podria hacer. Estoy
    programando unas clases, que van a tener los mismos metodos (enviar,
    eliminar, cancelar, ...) pero se llamaran de distinta forma. Queria
    para ahorra codigo, hacer unas comprobaciones en la db y segun que
    tipo sea utilizar una clase u otra. Esto lo tengo mas o menos claro,
    pero, como podria utilizar dinamicamente esto. Me explico con un
    ejemplo

    require_once("$nombreclase.php");

    $manejador = new $nombreclase(); // Aqui es la duda, que me gustaria
    llamar a la clase igual que su fichero, pero no se si asi funcionaria
    $info = $manejador->enviar('rjrjrjr' );


    vamos, a no tener que escribir el nombre fijo de la clase, sino que lo
    llame segun su php. Si me dicen que no se puede, tendre que meterlo en
    el codigo, con comprobaciones de $nombreclase y segun este, crear el
    objeto u otro :(

    Gracias.

    Saludos

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedOct 16, '11 at 12:24p
activeOct 20, '11 at 8:53a
posts4
users4
websitephp.net

People

Translate

site design / logo © 2022 Grokbase