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