Este é o meu projeto de portfólio para o programa ALX Software Engineering. O projeto é um ORM simples que permite interagir com o banco de dados usando PHP. O projeto ainda está em fase inicial e não é recomendado para uso em ambientes de produção. O projeto é de código aberto e contribuições são bem-vindas.
Sebastian Muchui
MIT
0.1.0
Você precisa ter o PHP instalado em sua máquina para usar este pacote. Se você não possui o PHP instalado, você pode baixá-lo no site oficial do PHP.
Em segundo lugar, certifique-se de ter o compositor instalado em sua máquina. Caso contrário, você pode instalá-lo seguindo as instruções fornecidas no site oficial do compositor. Feito isso, você precisa criar um arquivo compositor.json no diretório raiz do seu projeto e adicionar o seguinte código:
{
"minimum-stability" : " dev "
}
Depois disso, você pode instalar o pacote executando o seguinte comando em seu terminal:
composer require astianmuchui/ PixelSequel
O ORM vem com 2 partes principais, construídas separadamente para permitir flexibilidade e facilidade de uso. As duas partes são:
O modelo é a parte do ORM que permite interagir com as tabelas do banco de dados. Ele permite que você execute operações como inserção, atualização, consulta e exclusão. Para usar o modelo, você precisa criar uma nova instância da classe do modelo.
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel ' ,
username: ' root ' ,
password: '' ,
dbhost: ' localhost '
);
Por padrão, os seguintes valores são definidos:
username
: 'root'
password
: ''
dbhost
: 'localhost'
Em um ambiente de desenvolvimento, você pode simplesmente passar o dbname como único parâmetro para a classe do modelo.
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
Para inserir dados, basta chamar o método estático Insert
. Observe que a instância do Model não precisa ser atribuída a uma variável, pois os métodos inferirão a conexão do objeto instanciado.
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
Model:: Insert (
table: ' users ' ,
data: [
' name ' => ' John Doe ' ,
' email ' => ' [email protected] '
]
);
As chaves das matrizes de dados devem ser nomes de colunas válidos na tabela. Os valores correspondentes são os valores a serem inseridos na tabela. Nas próximas versões, o ORM será capaz de inferir automaticamente os nomes das colunas da tabela e validar os dados antes da inserção.
Aqui você basicamente precisa apenas chamar o método All
. O método pode usar vários parâmetros para filtrar os dados que você deseja recuperar.
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
$ users = Model:: All (
table: ' users ' ,
where: [
' name ' => ' John Doe '
]
where_like: [
' email ' => ' gmail '
]
order_by: 'id',
order: ' DESC ' ,
limit: 10
);
table: The table to read from
where: An associative array of the column names and their values to filter the data using the where clause
where_like: An associative array of the column names and their values to perform searches
order_by: The column to order the data by
order: The order to use. Either 'ASC' or 'DESC'
limit: The number of records to retrieve
json: A boolean value to determine if the data should be returned as a json string or an array
O método retorna um objeto dos dados recuperados. Você pode então percorrer o objeto para obter os dados. Se você definir o limite como 1, precisará selecionar o índice zero do objeto para obter os dados. Normalmente, um dos principais objetivos ao desenvolver isso era fazer com que uma única função executasse todas as funcionalidades de seleção. Existem outros métodos de seleção, mas ignore-os, pois não estão bem escritos e serão removidos em versões futuras.
O método update é basicamente uma réplica do método Insert, porém o tipo de parâmetro para identificar a linha e seu valor devem ser passados em
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
Model:: Update (
table: ' users ' ,
param_t: ' id '
param_n: 1 ,
data: [
' name ' => ' John Doe ' ,
' email ' => ' [email protected] '
]
);
param_t
é o tipo de parâmetro, normalmente um nome de coluna. param_n
é o valor do tipo de parâmetro.
O método Delete
é usado para excluir dados do banco de dados. É necessário o nome da tabela e o tipo e valor do parâmetro para identificar a linha a ser excluída.
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
Model:: Delete (
table: ' users ' ,
param_t: ' id '
param_n: 1
);
O esquema é a parte do ORM que permite interagir com as tabelas do banco de dados. Ele permite realizar operações como criar, atualizar e excluir tabelas. Para usar o esquema, você precisa criar uma instância da classe do modelo e passar a conexão do banco de dados para a classe do esquema. Observe que a instância do Model não precisa ser atribuída a uma variável e ao esquema também
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
A conexão pode ser verificada chamando o método Connected
na classe do modelo. O método retorna um valor booleano.
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
if (Model:: Connected ())
{
new Schema (
Model:: Connection ()
);
echo ' Connected ' ;
}
else
{
echo ' Not Connected ' ;
}
Depois que a conexão for estabelecida, você poderá criar tabelas chamando o método Create
na classe de esquema. O método recebe o nome da tabela e uma matriz associativa dos nomes das colunas e seus tipos de dados.
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Schema:: Create (
table: ' pxtest ' ,
structure: [
" id " => [
" type " => " int " ,
" length " => 11 ,
" primary_key " => true
],
" username " => [
" type " => " varchar " ,
" length " => 11 ,
" null " => false
]
]
);
As chaves da matriz de estrutura devem ser nomes de colunas válidos na tabela. Os valores correspondentes são matrizes associativas dos tipos de dados da coluna e suas propriedades. As propriedades são:
type: The data type of the column
length: The length of the column
primary_key: A boolean value to determine if the column is a primary key
null: A boolean value to determine if the column can be null
auto_increment: A boolean value to determine if the column is auto increment
O método Alter
é usado para alterar tabelas. Leva três parâmetros: o nome da tabela, o nome da coluna e o que definir
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Schema:: Alter (
table: ' pxtest ' ,
column: ' username '
set: " int(255) NOT NULL "
);
O método Drop
é usado para eliminar tabelas. Leva o nome da tabela como parâmetro.
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Schema:: Drop (
table: ' pxtest '
);
Para se desconectar do banco de dados, você pode chamar o método Disconnect
na classe do modelo.
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Model:: Disconnect ();
Contribuições são bem-vindas. Você pode contribuir bifurcando o repositório e fazendo uma solicitação pull. Você também pode abrir um problema se encontrar algum bug ou tiver alguma solicitação de recurso.