Buenas,
A raiz del post de nuestro compañero
eulerss http://www.forosdelweb.com/f68/clase...1/#post3275707
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 class-mysql.php
Código PHP:
Ver original<?php
class DataBase {
private $conexion;
private $resource;
private $sql;
public static $queries;
private static $_singleton;
public static function getInstance(){
self::$_singleton = new DataBase();
}
return self::$_singleton;
}
private function __construct($servidor, $user, $password, $db){
$this->queries = 0;
$this->resource = null;
}
public function execute(){
if(!($this->resource = mysql_query($this->sql, $this->conexion))){ return null;
}
$this->queries++;
return $this->resource;
}
public function alter(){
if(!($this->resource = mysql_query($this->sql, $this->conexion))){ return false;
}
return true;
}
public function loadObjectList(){
if (!($cur = $this->execute())){
return null;
}
$array[] = $row;
}
return $array;
}
public function setQuery($sql){
return false;
}
$this->sql = $sql;
return true;
}
public function freeResults(){
return true;
}
public function loadObject(){
if ($cur = $this->execute()){
return $object;
}
else {
return null;
}
}
else {
return false;
}
}
function __destruct(){
}
}
?>
Ejemplo script llamando a la clase
Código PHP:
Ver original<?php
include('class-mysql.php');
// Hacemos la conexión
$db = new DataBase('localhost','root','pass12421','mibasededatos');
$db = DataBase::getInstance();
// Supongamos que tenemos una tabla de usuarios
// Hacemos la consulta:
$db->setQuery("SELECT * FROM wp_posts");
// La ejecutamos y al mismo tiempo obtenemos un arreglo de objetos
// con los campos especificados en la consulta como propiedades.
$usuarios = $db->loadObjectList();
// Los imprimimos directamente en pantalla...
foreach($usuarios as $usuario){
echo 'ID: '.$usuario->ID;
echo 'Nombre: '.$usuario->post_name;
echo 'Grupo: '.$usuario->post_status;
echo '<br />';
}
?>
Tengo que decir que las lineas 18,19 y 20 de la clase no estaban así sino que no se le pasaba ningun parametro... Los he puesto yo para que sea mas reusable. 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.
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');
¿Qué me falta para acabar de encajar este rompezabezas?
Muchas gracias de antemano, estoy aprendiendo mucho con vuestros comentarios