Il s'agit de mon projet de portfolio pour le programme ALX Software Engineering. Le projet est un simple ORM qui vous permet d'interagir avec la base de données en utilisant PHP. Le projet en est encore à ses débuts et n’est pas recommandé pour une utilisation dans des environnements de production. Le projet est open source et les contributions sont les bienvenues.
Sebastian Muchui
MIT
0.1.0
Vous devez avoir PHP installé sur votre machine pour utiliser ce package. Si PHP n'est pas installé, vous pouvez le télécharger depuis le site officiel de PHP.
Deuxièmement, assurez-vous que Composer est installé sur votre machine. Sinon, vous pouvez l'installer en suivant les instructions fournies sur le site officiel du compositeur. Une fois cela fait, vous devez créer un fichier composer.json dans le répertoire racine de votre projet et ajouter le code suivant :
{
"minimum-stability" : " dev "
}
Après cela, vous pouvez installer le package en exécutant la commande suivante dans votre terminal :
composer require astianmuchui/ PixelSequel
L'ORM est livré avec 2 parties principales, construites séparément pour permettre flexibilité et facilité d'utilisation. Les deux parties sont :
Le modèle est la partie de l'ORM qui vous permet d'interagir avec les tables de la base de données. Il vous permet d'effectuer des opérations telles que l'insertion, la mise à jour, l'interrogation et la suppression. Pour utiliser le modèle, vous devez créer une nouvelle instance de la classe model.
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel ' ,
username: ' root ' ,
password: '' ,
dbhost: ' localhost '
);
Par défaut, les valeurs suivantes sont définies :
username
: 'root'
password
: ''
dbhost
: 'localhost'
Dans un environnement de développement, vous pouvez simplement transmettre le nom de base de données comme seul paramètre à la classe de modèle.
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
Pour insérer des données, il vous suffit d'appeler la méthode statique Insert
. Notez que l'instance Model n'a pas besoin d'être affectée à une variable car les méthodes déduiront la connexion à partir de l'objet instancié.
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
Model:: Insert (
table: ' users ' ,
data: [
' name ' => ' John Doe ' ,
' email ' => ' [email protected] '
]
);
Les clés des tableaux de données doivent être des noms de colonnes valides dans la table. Les valeurs correspondantes sont les valeurs à insérer dans le tableau. Dans les prochaines versions, l'ORM pourra déduire automatiquement les noms de colonnes de la table et valider les données avant l'insertion.
Ici, vous devez simplement appeler la méthode All
. La méthode peut prendre divers paramètres pour filtrer les données que vous souhaitez récupérer.
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
La méthode renvoie un objet des données récupérées. Vous pouvez ensuite parcourir l'objet pour obtenir les données. Si vous définissez la limite sur 1, vous devrez sélectionner l'index zéro de l'objet pour obtenir les données. Généralement, l'un des objectifs clés lors du développement de ce système était de faire en sorte qu'une seule fonction effectue toutes les fonctionnalités de sélection. Il existe d'autres méthodes de sélection, mais ignorez-les car elles ne sont pas bien écrites et seront supprimées dans les versions futures.
La méthode update est essentiellement une réplique de la méthode Insert. Cependant, le type de paramètre permettant d'identifier la ligne et sa valeur doivent être transmis.
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
est le type de paramètre, généralement un nom de colonne. param_n
est la valeur du type de paramètre.
La méthode Delete
est utilisée pour supprimer des données de la base de données. Il prend le nom de la table ainsi que le type et la valeur du paramètre pour identifier la ligne à supprimer.
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
Model:: Delete (
table: ' users ' ,
param_t: ' id '
param_n: 1
);
Le schéma est la partie de l'ORM qui vous permet d'interagir avec les tables de la base de données. Il vous permet d'effectuer des opérations telles que la création, la mise à jour et la suppression de tables. Pour utiliser le schéma, vous devez créer une instance de la classe de modèle et transmettre la connexion à la base de données à la classe de schéma. Notez que l'instance Model n'a pas besoin d'être affectée à une variable et au schéma également.
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
La connexion peut être vérifiée en appelant la méthode Connected
sur la classe modèle. La méthode renvoie une valeur booléenne.
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 ' ;
}
Une fois la connexion établie, vous pouvez créer des tables en appelant la méthode Create
sur la classe schéma. La méthode prend le nom de la table et un tableau associatif des noms de colonnes et de leurs types de données.
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
]
]
);
Les clés du tableau de structure doivent être des noms de colonnes valides dans le tableau. Les valeurs correspondantes sont des tableaux associatifs des types de données de colonne et de leurs propriétés. Les propriétés sont :
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
La méthode Alter
est utilisée pour modifier les tables. Il prend en compte trois paramètres : le nom de la table, le nom de la colonne et ce qu'il faut définir.
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 "
);
La méthode Drop
est utilisée pour supprimer des tables. Il prend le nom de la table comme paramètre.
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Schema:: Drop (
table: ' pxtest '
);
Pour vous déconnecter de la base de données, vous pouvez appeler la méthode Disconnect
sur la classe modèle.
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Model:: Disconnect ();
Les contributions sont les bienvenues. Vous pouvez contribuer en créant un fork sur le référentiel et en effectuant une pull request. Vous pouvez également ouvrir un problème si vous trouvez des bugs ou si vous avez des demandes de fonctionnalités.