He visto muchos proyectos que utilizan Slim Framework para crear APIs sencillas en PHP, y muchos emplean una función para conectarse a la Base de Datos como la siguiente:
function connect_db() { $server = 'localhost'; $user = 'user'; $pass = 'pass'; $database = 'slim_db'; $connection = new mysqli($server, $user, $pass, $database); return $connection; }Todo bien para algo sencillo pero ¿qué pasa si el proyecto es algo grande o necesita ser escalable?, es cuando debemos modificar un poco el código, como el objetivo es hacer la aplicación lo mas escalable posible entonces vamos a utilizar PDO.
Primero modificamos src/settings.php:
// Database settings 'db' => [ 'host' => 'localhost', 'dbname' => 'mysql-db', 'user' => 'mysql-user', 'pass' => 'mysql-pass' ],Ahora vamos con src/dependencies.php:
// PDO database library $container['db'] = function ($c) { $settings = $c->get('settings')['db']; $pdo = new PDO("mysql:host=" . $settings['host'] . ";dbname=" . $settings['dbname'], $settings['user'], $settings['pass']); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); return $pdo; };Ya solo nos resta definir las rutas, para consultar usuarios por ejemplo:
$app->get('/test/[{id}]', function ($request, $response, $args) { $stmt = $this->db->prepare("SELECT * FROM usuarios WHERE id=:id"); $stmt->bindParam("id", $args['id']); $stmt->execute(); $data = $stmt->fetchObject(); return $this->response->withJson($data); });IMPORTANTE: si vamos a trabajar con caracteres especiales (tildes / acentos) entonces debemos iniciar la conexión de la siguiente manera:
$pdo = new PDO("mysql:host=" . $settings['host'] . ";dbname=" . $settings['dbname'], $settings['user'], $settings['pass'], array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));Este atributo no puede ser definido una vez se realiza la conexión, por lo que es necesario enviarlo como parámetro en el constructor, mas información: PHP PDO MySQL
Recibe notificaciones por correo
Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.
Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión