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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *