Cita:
Iniciado por neodani El error que me da al ejecutar el script, es que revise la linea 5 del script precisamente esta
$db = new DataBase('localhost','root','pass12421','mibaseded atos');
Primero que todo, cuando aparezcan errores, muestra exactamente cuales son. Sí te dice que veas la línea 5, pero no nos dices por qué, cuál es el error exacto.
Eso solo como consejo/petición al comunicar problemas.
Cita:
Iniciado por neodani Me sale una duda, que para no ensuciar su hilo abro este nuevo hilo, con una nueva clase mysql que utiliza el patron singleton al cual quiero aplicar el último comentario de maturano
(...)
Entonces me preguntaba como llamar a la clase, estoy casi seguro que si no tuviese el patron singleton lo podría hacer así
$db = new DataBase('localhost','root','pass12421','mibaseded atos');
Pero lo tiene y no se como crear la clase y que se aplique el patron singleton... me pierdo un poco.
En mi último comentario hablaba exclusivamente de la función del constructor, no aplicaba el patrón singleton. También mencioné leyeras los enlaces que he dejado. Extraído de
www.php.net/singleton (que dejé cuando sí hablaba de Singleton):
Código PHP:
Ver originalclass Example
{
// ...
// OJO: A private constructor; prevents direct creation of object
private function __construct()
{
echo 'I am constructed';
}
// ...
}
// Y más adelante, en su implementación:
// OJO: This would fail because the constructor is private
$test = new Example;
// This will always retrieve a single instance of the class
$test = Example::singleton();
$test->bark();
Con singleton la idea es no utilizar el operador
new, lo utilizas dos veces y tienes dos instancias, no tienes control sobre ello. Para tener el control se especifica como privado el método constructor y manejas la creación/recuperación de la instancia a través de un método.
Te falta fusionar las ideas. Tu código:
Código PHP:
Ver original// Hacemos la conexión
$db = new DataBase('localhost','root','pass12421','mibasededatos');
$db = DataBase::getInstance(); // ¡Sobre-escribes inmediatamente después!
¿No el método getInstance() es el que recupera/crea la instancia?. Fusionando:
Código PHP:
Ver original// Hacemos la conexión
$db = DataBase::getInstance('localhost','root','pass12421','mibasededatos');
¿Mejor?. Espero quede claro ahora.