Buenas, tengo una dudilla. Tengo una clase abstracta, la cual quiero que tenga un metodo tipo getInstance para aplicar Singleton. El problema es que no encuentro la manera de hacer funcionar el singleton en las clases que heredan de esta primera... sin tener que sobreescribir el metodo. Por si no se entiende, pongo codigo que tengo hecho:
Código PHP:
<?php
interface Individuos
{
static function getInstance();
function initialize( $data );
}
abstract class Personas implements Individuos
{
protected $name;
protected static $instance;
protected function __construct()
{
}
public static function getInstance() {
if ( ! self::$instance )
{
$class = get_class();
echo $class; //sale Personas
self::$instance = new $class();
}
return self::$instance;
}
public function initialize($data)
{
$this->name = $data["name"];
}
}
class Hombre extends Personas
{
}
$data = array('name' => 't');
$tb = Hombre::getInstance();
$tb->initialize( $data );
?>
Lo intente con get_class(), pero me devuelve el nombre de la clase abstracta (como esta ahora) y claro, me tira error por querer instanciar una clase abstracta. Solo deseo que por ejemplo la clase Hombre tenga un metodo para recueprar una unica instancia del objeto, y que este metodo sea heredado, o sea que no lo quiero escribir en cada una de las clases que heredan de Personas.
Alguna solución o alternativa?
Muchas gracias