Simples abstração de banco de dados em Php 8.x usando conector PDO
- PHP 8.x
- extensões do PDO habilitadas no php.ini
pdo_sqlite
,pdo_mysql
epdo_pgsql
- Docker (opcional)
Funciona com os seguintes bancos de dados
- Sqlite
- Mysql
- Postgre
if (! defined('RMM_VERSION')) {
require_once dirname(dirname(__DIR__)) . '/autoload.php';
}
use RMM\Database;
$config = [
'sqlite'=> [
'driver' => 'sqlite',
'database' => './examples/sqlite/data/Chinook.db',
]
];
try {
$db = new Database($config['sqlite']);
$db->connect();
} catch (\Throwable $th) {
print_r($th->getMessage());
exit;
}
$connection = $db->getConnection();
E voilá, tem uma conexão com o banco.
Exemplo de consulta usando a conexão criada
$connection = $db->getConnection();
$stmt = $connection->query("SELECT EmployeeId, FirstName, LastName, Title FROM Employee");
foreach ($stmt as $row) {
echo($row['EmployeeId'].' | '.$row['FirstName'].' | '.$row['LastName'].' | '.$row['Title'] . PHP_EOL );
}
unset($db);
No diretório examples
contém exemplos de conexão com bancos de dados diferentes usando dados de exemplo
Considere utilizar o Docker para validar facilmente os exemplos para Mysql
e Postgres
Para rodar exemplo 1 [SQLITE
]
$ php ./examples/sqlite/connect.php
Retorno será algo como isso aqui
Para rodar exemplo 2 [MYSQL
]
$ php ./examples/mysql/connect.php
Retorno será algo como isso aqui
Para rodar exemplo 3 [POSTGRES
]
$ php ./examples/pgsql/connect.php
Retorno será similar ao anterior (mysql)
É possível encontrar os scripts e ou bancos de dados para rodar em docker estes exemplos em:
https://github.com/ricardo-melo-martins/docker
Lá tem as instruções para "subir" os dumps em poucos comandos
Para utilizar as configurações do exemplo, acesse o diretório
$ cd .docker/
Faça uma copia do arquivo de exemplo
$ cp .env.example .env
As variáveis já possuem usuário e senha usados nos exemplos, mas é possível alterar como quiser. Se alterar apenas lembre-se de mudar em examples/config/config.php
para que os exemplos continuem funcionando.
Seguindo as instruções terá algo como isso no Docker Desktop ...
Agora é só rodar os exemplos.