Contexto
Cuando se inicia el aprendizaje de desarrollo con PHP, en un determinado momento se requiere de crear una clase o métodos para acceder a la base de datos. Y muchas ocasiones no se necesita utilizar un framework completo, o algo más complejo. Por lo que decidí compartir con ustedes una de las clases que usé para proyectos desarrollados desde cero en PHP. Es una clase simple y fácil de utilizar, que permite acceder a la base de datos ya sea en MySQL o MariaDB, sin embargo se puede modificar u ajustar para utilizarlo con SQL server o bien PostgreSQL
Archivos
El proyecto completo lo pueden descargar desde el repositorio de gitlab. y probarlo directamente.
Requerimientos
- PHP > 7.2
- PDO > 7
- MySQL, MariaDB (Previamente instalar alguna base de datos basadas en mysql)
Archivo Config.php
Éste archivo contendrá los acceso para la base de datos.
<?php
date_default_timezone_set('America/Mexico_City');
define("DB_HOST", "localhost");
define("DB_USER", "root");
define("DB_PASS", "");
define("DB_NAME", "base_de_datos");
define("DB_PORT", "3306");
define("DB_CHARSET", "latin1");
Archivo Init.php
Éste archivo contendrá las declaraciones de las clases que se creen dentro de la carpeta class y que se requieran en el proyecto.
<?php
// Se inicia sesión
session_start();
// Se incluye archivo de configuración
require_once('Config.php');
function autoLoadClass($class)
{
require_once('classes/'.$class.'.php');
}
spl_autoload_register('autoLoadClass');
Uso
Una vez configurado los archivos Init.php y Config.php, ahora es necesario crear una clase, de preferencia del mismo nombre que la tabla que contenga.
Como ejemplo, se usará la base de datos que viene en éste repositorio:
User.php
<?php
class User
{
// Inicializando variable
private $db;
private $table;
/*
* Constructor de la clase
*/
public function __construct()
{
$this->db = new Database;
$this->table = "users";
}
public function agregarRegistro($data)
{
if ($this->db->insert("users", $data)) {
$last_id = $this->db->lastInsertId();
$this->db->query("SELECT * FROM " . $this->table . " WHERE id=:id;");
$this->db->bind(':id', $last_id, PDO::PARAM_INT);
$result = $this->db->single();
return $result;
} else {
return 0;
}
}
public function usuarios()
{
$this->db->query("SELECT * FROM " . $this->table . ";");
$resultados = $this->db->resultset();
return $resultados;
}
public function actualizarRegistro($data, $id)
{
if ($this->db->updates($this->table, $data, $id)) {
return true;
} else {
return false;
}
}
public function eliminarRegistro($id)
{
if ($this->db->deletes($this->table, $id)) {
return true;
} else {
return false;
}
}
}
Acceder a los datos
Archivo index.php
Para acceder a los datos, se creará un objeto de la clase y se accederán a sus métodos:
Crear un archivo index.php y probar lo siguiente.
<?php
require('Init.php');
// se crea el objeto a partir de la clases.
$user = new User;
// dentro de la clase User se crearán los métodos necesarios
//Insertando registro
$newUser = [
'name' => 'Jorge',
'last_name' => 'Udemy',
'email' => 'andrew@gmail.com',
'gender' => 'Male',
'hobbie' => 'Coding',
'country' => 'Usa',
];
$usuarioNuew = $user->agregarRegistro($newUser);
echo $usuarioNuew->name . '<br>';
echo $usuarioNuew->last_name . '<br>';
echo $usuarioNuew->email . '<br>';
//Listando registros
echo '<table>
<thead>
<tr>
<th>#</th>
<th>Nambe</th>
<th>Last</th>
<th>Email</th>
</tr>
</thead>
<tbody>';
$i = 1;
foreach ($user->usuarios() as $u) {
echo '<tr>
<th scope="row">' . $i . '</th>
<td>' . $u->name . '</td>
<td>' . $u->last_name . '</td>
<td>' . $u->email . '</td>
</tr>';
$i++;
}
echo '</tbody>
</table>';
//actualizar un registro
$datosUp['name'] = 'Jorge';
$datosUp['last_name'] = 'Nitales Axules';
$user->actualizarRegistro($datosUp, ['id' => 23]);
//eliminar un registro
$user->eliminarRegistro(4);
Espero que les sea de utilidad, cualquier cambio, sugerencia, o reutilización del código, lo pueden realizar. Pueden modificarlo como lo requieran.