Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Richter{}; en 11 Noviembre 2014, 00:42 am



Título: Crear un gestor de contenidos con sistema de templates [MySQLi] [Parte 1]
Publicado por: Richter{}; en 11 Noviembre 2014, 00:42 am
Bueno, procederemos directamente a enseñar cómo hacerlo.
Creamos una carpeta en nuestra raíz (htdocs, wwwroot...) llamada Includes o como queráis, pero seguiremos el tutorial a la manera generalizada.
En ella crearemos un archivo llamado Heart.php (o como queráis) en la cuál introduciremos el siguiente código principal

Código
  1. <?php
  2.  
  3.  class Heart {
  4.  }
  5.  
  6. ?>

Con esto definimos la clase Heart.
Ahora procederemos a utilizar funciones MySQLi.

Código
  1. <?php
  2.  
  3.  class Heart {
  4.    public $MySQLi;
  5.      function __construct() {
  6.      }
  7. }
  8.  
  9. ?>

Con la función __construct requeriremos la construcción del servidor (en ella el archivo de configuración, es decir, el documento ROOT de la CMS). Pero antes creamos el archivo Configuration.php dentro de la misma carpeta, que contendrá esto:

Código
  1. <?php
  2.  
  3.  $host = 'localhost';
  4.  $user = 'root';
  5.  $pass = 'S7pVAgVe';
  6.  $db   = 'lavvosfan';
  7.  
  8. ?>
  9.  

Ahora, requerimos y construimos...

Código
  1. <?php
  2.  
  3.  class Heart {
  4.    public $MySQLi;
  5.      function __construct() {
  6.        require $_SERVER['DOCUMENT_ROOT'] . '/Includes/Configuration.php';
  7.          }
  8.      }
  9.  
  10. ?>

Bien, ahora ya requerida la construcción del Documento Root, procesaremos a hacer las variables que harán que haga la conexión con nuestra base de datos, y incluiremos la variable de construcción total del documento. Quedaría totalmente así:

Código
  1. <?php
  2.  
  3.  class Heart {
  4.    public $MySQLi;
  5.      function __construct() {
  6.        require $_SERVER['DOCUMENT_ROOT'] . '/Includes/Configuration.php';
  7.        $this->MySQLi = new MySQLi($host, $user, $pass, $db);
  8.          if ($this->MySQLi->connect_error) {
  9.            echo 'ERROR MySQLi';
  10.          }
  11.      }
  12.  }
  13.  $core = new Heart();
  14.  
  15. ?>

Espero que os haya gustado, y espero que os sirva la segunda parte, tercera y las que necesitemos hasta tener un buen gestor de contenidos; seguro, factible y rápido.
¡Un saludo!


Título: Re: Crear un gestor de contenidos con sistema de templates [MySQLi] [Parte 1]
Publicado por: MinusFour en 11 Noviembre 2014, 16:18 pm
Yo haría la clase tipo singleton y agregaria un __destruct para cerrar el enlace.

Código
  1.   class Heart {
  2.      public $MySQLi;
  3.      public $instance;
  4.  
  5.      public static function getInstance() {
  6.         static $instance = null;
  7.         if($instance == null) {
  8.             $instance = new Heart();
  9.          }
  10.         return $instance;
  11.      }
  12.  
  13.     private function __construct() {
  14.        require $_SERVER['DOCUMENT_ROOT'] . '/Includes/Configuration.php';
  15.        $this->MySQLi = new MySQLi($host, $user, $pass, $db);
  16.          if ($this->MySQLi->connect_error) {
  17.            echo 'ERROR MySQLi';
  18.          }
  19.      }
  20.  
  21.      private function __destruct() {
  22.         $this->MySQLi->close();
  23.      }
  24.   }
  25.  
  26.   $heart = Heart::getInstance();

Así cada vez que llames a getInstance() no vas a estar creando nuevos objetos con nuevas conexiones SQL. El __destruct no es necesario pero nunca está de mas asegurarse que las conexiones se cierran al terminar los scripts.


Título: Re: Crear un gestor de contenidos con sistema de templates [MySQLi] [Parte 1]
Publicado por: MinusFour en 11 Noviembre 2014, 20:10 pm
borrar...