Hola masnovita, te voy a contar lo que yo hago, no puedo afirmar que este bien o mal ya que soy tan nuevo como vos en esto. Y justamente me paso lo mismo que a vos, java me contagio el bichito de los objectos.
Nro1, usaria un modelo para setear la configuracion, direccion de la base, pass de la base, tabla, y cualquier otra cosa que queramos;
Código PHP:
class DBConfig {
private $dbHost;
private $dbUser;
private $dbPassword;
private $dbName;
public function __construct($dbHost,$dbUser,$dbPassword,$dbName) {
$this->dbHost=$dbHost;
$this->dbUser=$dbUser;
$this->dbPassword=$dbPassword;
$this->dbName=$dbName;
}
public function getDbHost() {
return $this->dbHost;
}
public function getDbUser() {
return $this->dbUser;
}
public function getDbPassword() {
return $this->dbPassword;
}
public function getDbName() {
return $this->dbName;
}
}
Bien, ahora vamos a crear la clase Database, esta se encarga de crear un objecto DBConfig cuando se crea y asignarselo, luego cuando le pidas una query vera si esta conectada o no, si no esta conectada se conecta y te devuelve la query.
Código PHP:
class Database {
private $dbConfig;
private $link;
public function __construct($dbHost,$dbUser,$dbPassword,$dbName) {
$this->dbConfig=new DBConfig($dbHost,$dbUser,$dbPassword,$dbName);
}
private function connect(){
// if there is no link to DB then connect
if (!isset($this->link)){
$this->link=mysql_connect($this->dbConfig->getDbHost(),$this->dbConfig->getDbUser(),$this->dbConfig->getDbPassword());
mysql_select_db($this->dbConfig->getDbName(),$this->link);
if (!isset($this->link))
throw new Exception('Not connected',1);
}
}
public function tquery($sql)
{
$this->connect();
if(!$result = mysql_query($sql,$this->link))
throw new Exception('SQL ERROR',2);
return($result);
}
public function tunquery($sql)
{
$this->connect();
if(!$result = mysql_unbuffered_query($sql,$this->link))
throw new Exception('SQL ERROR',2);
return($result);
}
public function escape($value)
{
$this->connect();
if(get_magic_quotes_gpc()) $value = stripslashes($value);
if(!is_numeric($value)) $value = mysql_real_escape_string($value,$this->link);
return($value);
}
}
Lo que faltaria es que crees la clase usuario que haga algo como;
Código PHP:
class Usuario {
private $id;
private $login;
private $pass;
public function getLogin() { return $this->login; }
public function getPass() { return $this->pass; }
public __construct($id) {
try {
$this->loadFromCache($id);
} catch (Exception $e) {
$this->loadFromDatabase($id);
}
}
private function loadFromDatabase($id) {
// database debe ser creada primero
global $laDatabase;
if(!is_object($laDatabase)) throw new Exception ('no se creo objeto database');
if ($id<0) throw new Exception('error en id');
// $laDatabase->tunquery("select usando el ".$id);
// fetch assoc
// setear usuario
// $this . salvar en cache
}
private function loadFromCache($id) {
//buscar en cache
// si no esta tirar excepcion
// si esta setear usuario
}
}
Bueno, ahora lo que tenes que hacer es un php que se encargue de cargar los modelos y inicializar la base de datos;
include 'modelos.php';
$laDatabase= new Database('elHostdeDB','nombre de usuario','pass','nombre de la base');
Buenos, espero que esto ayude.
Saludos, Eugenio