O projeto em questão se trata de um multiconector de banco de dados, oferecendo uma estrutura pronta de Active Records para os bancos de dados mais utilizados: MySQL, PostgreSQL e SQL Server. Além disso, permite a conexão com outros bancos de dados, expandindo suas possibilidades.
Tecnologias utilizadas:
- PHP 8+
Comece clonando o repositório do projeto no seu diretório local:
git clone _url_
Em seguida, instale as dependências do projeto utilizando o Composer:
composer install
Configure as variáveis de ambiente, incluindo as credenciais do banco de dados. Caso for pgsql, sqlsrv ou mysql.
define('DB_CONNECTION', 'mysql');
define('DB_HOST', 'localhost');
define('DB_PORT', 3306);
define('DB_DATABASE', 'db_teste');
define('DB_USERNAME', 'usuario');
define('DB_PASSWORD', 'senha');
Caso for outro banco de dados. (exemplo com banco Oracle, mas pode ser qualquer um relacional para testar)
define('NEW_DB_CONNECTION', 'pattern');
define('NEW_DB_DNS', "oci:dbname=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SID=db_teste)))");
define('NEW_DB_USERNAME', 'usuario');
define('NEW_DB_PASSWORD', 'senha');
Opções de Configuração
define('COLUMNS_BD', 'NATURAL'); // LOWER / NATURAL / UPPER
- COLUMNS_BD: Define como as colunas das tabelas serão retornadas:
- LOWER: Retorna em minúsculas.
- NATURAL: Retorna como está no banco de dados.
- UPPER: Retorna em maiúsculas.
define('RETURN_BD', 'ARRAY'); // ARRAY / OBJECT
- RETURN_BD: Define o formato de retorno dos dados das tabelas:
- ARRAY: Retorna como um array associativo.
- OBJECT: Retorna como um objeto.
Para criar um model, acesse o diretório app/database/Models. Crie um novo arquivo PHP e defina a classe do seu model, extendendo a classe Model e setando o nome da tabela na variável $table:
<?php
namespace app\database\Models;
use app\database\ActiveRecords\Model;
class UserModel extends Model
{
protected $table = 'usuarios';
}
Observações:
- Substitua usuarios pelo nome real da sua tabela.
- Você pode criar quantos models forem necessários, seguindo a mesma estrutura.
Neste sistema, ao instanciar o model, poderá realizar as consultas da seguinte maneira:
- SELECT (retorna dados da tabela)
$user = new UserModel;
$user->select();
- INSERT (passa os dados a serem preenchidos) (retorna o id inserido)
$user = new UserModel;
$user->insert([
'nome' => 'Adm',
'email' => 'usuario@gmail.com',
'senha' => '12345',
]);
- UPDATE (passa os dados a serem atualizados e a condição) (retorna a quantidade de linhas afetadas)
$user->update(['nome' => 'Supervisor'], ['id' => 1]);
- DELETE (passa uma condição para o delete) (retorna a quantidade de linhas afetadas)
$user->delete(['id' => 1]);
- Get Table (retorna a tabela setada na model)
$user->getTable();
- QUERY (literalmente passa uma query)
$user->sql('SELECT * FROM usuarios');
Observações:
- INSERT, SELECT, UPDATE e DELETE está disponível apenas para banco de dados pgsql, sqlsrv ou mysql, setados em:
define('DB_CONNECTION', 'mysql');
define('DB_HOST', 'localhost');
define('DB_PORT', 3306);
define('DB_DATABASE', 'db_teste');
define('DB_USERNAME', 'usuario');
define('DB_PASSWORD', 'senha');
- Para demais bancos, as querys terão de ser resolvidas na função sql;
$user->sql('SELECT * FROM usuarios');
Essa é apenas uma estrutura básica usando Design Patterns, Obrigada pelo apoio!