Otra de Objetos
Juan Andrés Ramírez A.
jandres en lagos-ing.com
Jue Jul 8 18:27:42 CLT 2010
Estimados Contertulios:
Como se estaban quejando de que la lista estaba muerta, pues bien
les tengo otra preguntita. (Obviamente que después de buscar por google).
Tengo la siguiente clase para mysql:
Class BD{
private $_host;
private $_user;
private $_pass;
protected $link;
private static $instancia; // Una propiedad para tener la instancia
de la clase
//FUNCION CONTRUCTOR PARA INICIALIZAR DATOS DE LA CLASE
Private Function __construct(){
require "config.php";
$this->_host=$host;
$this->_user=$user;
$this->_pass=$pass;
}
/*SINGLETON*/
// Desde aqui se obtiene la instancia OJO con el static
Public static function getInstance () {
if (!isset(self::$instancia)) {
$obj = __CLASS__;
self::$instancia = new $obj;
}
return self::$instancia;
}
// Para evitar la clonacion de este objeto
private function __clone() {
throw new Exception('No se permite clonar este objeto.');
}
/*FIN DEL SINGLETON
//CONECCION A LA BD
Protected Function conn(){
$this->link=mysql_connect($this->_host, $this->_user,
$this->_pass);
if(!$this->link){
die('No pudo conectarse: ' . mysql_error());
}else{
return $this->link;
}
}
}
Entonces otra Clase cualquiera para llamar a la anterior:
Class Cualquiera{
Private Function __construct(){}
//NOS CONECTAMOS A LA BD
$this->conn = BD::getInstance();
}
Pues bien, el error que me tira es este: syntax error, unexpected
T_VARIABLE, expecting T_FUNCTION en la línea especifica donde esta:
$this->conn = BD::getInstance(); y que se encuentran las 2 clases en el
mismo archivo.php.
Espero que se entienda, lo que quiero es llamar a la clase BD usando
Singleton, pero cuando la llamo desde otra clase, estando en el mismo
archivo, me tira errores, si llamo a la Clase BD, por ejemplo, en un
index.php, no tengo problemas.
//esto sin problemas
Index.php
<?php
Include("claseBD.php");
$conn = BD::getInstance();
Print_r($conn);
//salida: BD Object ( [id_conn:private] => [_host:private] => 192.168.100.72
[_user:private] => user [_pass:private] => password [link:private] => )
?>
Muchas gracias.
Más información sobre la lista de distribución PHP