Otra de Objetos
Jorge O. Ponce Toloza
jp en mat.puc.cl
Jue Jul 8 19:01:30 CLT 2010
Hola,
no entendi mucho el codigo (lo del singleton), sin embargo
una clase deberia ser heredada de otra:
Class Cualquiera extends DB{
}
http://php.net/manual/es/keyword.extends.php
Salu2.
Jpt.
--
-------------------------------------------------------------------
Jorge Ponce T.
Servicios TI - Dirección de Gestión Docente
Facultad de Matemáticas. Pontificia Universidad Católica de Chile
Fono: (56 02) 354 5747 - Fax (56 02) 552 5916
jp en mat.puc.cl
-------------------------------------------------------------------
----- Mensaje original -----
De: "Juan Andrés Ramírez A." <jandres en lagos-ing.com>
Para: "Lista de desarrolladores en PHP" <php en listas.inf.utfsm.cl>
Enviados: Jueves, 8 de Julio 2010 18:27:42
Asunto: Otra de Objetos
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