Por ejemplo este es mi proyecto:
Código PHP:
class Helper {
//Propiedades
private static $host = 'localhost';
private static $user = 'root';
private static $pass = '';
private static $dbname = 'menu_url';
private static $dbh;
private static $error;
private static $router;
public static function construct(){
// Set DSN -- Donde se conecta
$dsn = 'mysql:host=' . self::$host . ';dbname=' . self::$dbname;
// Set options
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
// Create a new PDO instanace, crear el objeto de acceso a base de datos
try{
self::$dbh = new PDO($dsn, self::$user, self::$pass, $options);
//funcion para crear el menu desde la base de datos
self::setRouter();
}
// Catch any errors
catch(PDOException $e){
self::$error = $e->getMessage();
}
}
public static function setRouter() {//Le cargo a 'router' los valores de inicialización
$array = array();
$stmt = self::$dbh->prepare('SELECT * FROM url');//stmt = statement = Sentencia, consulta
$stmt->execute();
// Luego recorres el juego de resultados:
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$array[$row['arrayUrl_name']] = array('column' => $row['arrayUrl_column'],'content' => $row['arrayUrl_content']);
// Asignas la columna sólo si es necesaria
if($row['arrayUrl_column'] != '')
{
//$array[$row['arrayUrl_name']]['arrayUrl_column'] = $row['arrayUrl_column'];
}
}
self::$router = $array;
}
/*
// Finalmente compruebas si el array se creó correctamente
var_dump($array);
// Si todo va bien, eliminas estas últimas líneas
*/
public static function getColumn($file = null ) {
self::construct();
if (array_key_exists($file, self::$router) && isset(self::$router[$file]['column'])) {
ob_start();
if(is_file(self::$router[$file]['column']))
require_once(self::$router[$file]['column']);
return ob_get_clean();
}
}
public static function getContent($file = null) {
self::construct();
if (array_key_exists($file, self::$router) && is_file(self::$router[$file]['content'])) {
ob_start();
require_once(self::$router[$file]['content']);
return ob_get_clean();
}
}
}
No se cómo adaptar esa clase a este nuevo proyecto para usar una configuración externa para la conexión a la BD y usarla en varias clases:
configuracion.ini:
Código:
[database] driver = mysql host = localhost port = 3306 schema = menu_url username = root password =
class.consultas.php:
Código PHP:
abstract class configuracion {
protected $datahost;
protected function conectar($archivo = 'configuracion.ini'){
if (!$ajustes = parse_ini_file($archivo, true)) throw new exception ('No se puede abrir el archivo ' . $archivo . '.');
$controlador = $ajustes["database"]["driver"]; //controlador (MySQL la mayoría de las veces)
$servidor = $ajustes["database"]["host"]; //servidor como localhost o 127.0.0.1 usar este ultimo cuando el puerto sea diferente
$puerto = $ajustes["database"]["port"]; //Puerto de la BD
$basedatos = $ajustes["database"]["schema"]; //nombre de la base de datos
try{
return $this->datahost = new PDO (
"mysql:host=$servidor;port=$puerto;dbname=$basedatos",
$ajustes['database']['username'], //usuario
$ajustes['database']['password'], //constrasena
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);
}
catch(PDOException $e){
echo "Error en la conexión: ".$e->getMessage();
}
}
}
Código PHP:
class Persona
{
private $personas;
public function obtenerPersonas(){
$consulta = "SELECT * FROM personas";
$valores = null;
$oConectar = new conectorDB; //instanciamos conector
$this->personas = $oConectar->consultarBD($consulta,$valores);
return $this->personas;
} //Termina funcion obtenerPersonas();
public function registrarPersonas($nombre,$apellido,$edad){
$registrar = false; //creamos una variable de control
$consulta = "INSERT INTO personas
VALUES (:nombre, :apellido, :edad)";
//VALORES PARA REGISTRO
$valores = array("nombre"=>$nombre,
"apellido"=>$apellido,
"edad"=>$edad);
$oConexion = new conectorDB; //instanciamos conector
$registrar = $oConexion->consultarBD($consulta, $valores);
if($registrar !== false){
return true;
}
else{
return false;
}
} //Termina funcion registrarUsuarios()
}/// TERMINA CLASE USUARIOS ///
Ojalá puedan ayudarme amigos!
![sonrisota](http://static.forosdelweb.com/fdwtheme/images/smilies/xD.png)