Genos est un micro-framework PHP qui va vous permettre de réaliser les tâches les plus récurrentes en un tour de main.Genos vous permettra de consulter, enregistrer et mettre à jour des enregistrements stockés en basede données, avec quelques lignes de code seulement.
Avec quel framework travailler ? C’est probablement une des premières questions que se posent les développeurs qui débutent avec le langage PHP. Il en existe de très bons mais tous demandent un temps d’apprentissage et de maîtrise considérable. Ils ne sont d’autre part pas tous adaptés à l’ensemble de vos projets. Genos est un framework qui demande seulement les connaissances de base en programmation orientée objet. Cerise sur le gâteau, le framework Genos vous demandera uniquement 30 min d’apprentissage !
L’installation est très rapide, suivez les instructions suivantes :
L’implémentation du framework Genos nécessite le respect des contraintes suivantes :
class student {
private $id;
private $firstname;
private $lastname;
private $birth;
public function __construct (){
$this ->id = 0;
$this ->firstname = "" ;
$this ->lastname = "" ;
$this ->birth = "0000-00-00" ;
}
}
Valeur par défaut : true
Cette variable globale permet de définir si l’intitulé de votre clé primaire de type auto incrément se nommera “id” ou non.
Si la valeur de cette variable est définie à false, il faudra créer un attribut de classe “primary_key” qui contiendra le nom de votre clé primaire de type auto incrément.
class student {
private $primary_key;
private $id;
private $firstname;
private $lastname;
private $birth;
public function __construct (){
$this ->primary_key = "id_student" ;
$this ->id = 0;
$this ->firstname = "" ;
$this ->lastname = "" ;
$this ->birth = "0000-00-00" ;
}
}
Valeur par défaut : lowercase
Comme vous le savez sûrement, si vous hébergez une base de données et un site/application PHP, il y a de forte chance que vous soyez sur un serveur Linux.
Contrairement à Windows, ce dernier est case sensitive, c’est à dire qu’il différencie les minuscules et les majuscules.
Autrement dit la table student sera différente de la table Student .
La variable globale $TABLE_CASE vise à gérer cette problématique.
Par défaut sa valeur elle fixée à lowercase mais elle peut posséder les valeures suivantes :
class student {
private $table_name;
private $id;
private $firstname;
private $lastname;
private $birth;
public function __construct (){
$this ->table_name = "Student" ;
$this ->id = 0;
$this ->firstname = "" ;
$this ->lastname = "" ;
$this ->birth = "0000-00-00" ;
}
}
Saisissez le nom de votre base de données
Définit le host de connexion à votre base de données
Définit le port utilisé.
Définit le nom d’utilisateur de votre base de données.
Définit le mot de passe de votre base de données.
Félicitation ! Votre fichier config-genos.php étant configuré vous pouvez utiliser le framwework Genos.
Pour ce faire vous devez incorporer le framework dans chacune des classes pour lesquelles vous
prévoyez un usage du framework Genos.
Genos est un "trait” (lien sur la doc officielle PHP) , ce qui signifie que pour hériter de ses
attributs et méthodes il va falloir importer le framework comme ceci :
class student {
use Genos ;
private $table_name;
private $id;
private $firstname;
private $lastname;
private $birth;
public function __construct (){
$this ->table_name = "Student" ;
$this ->id = 0;
$this ->firstname = "" ;
$this ->lastname = "" ;
$this ->birth = "0000-00-00" ;
}
}
Index.php
$s = new student; $s->Set( "firstname" , "John" ); $s->Set( "lastname" , "Doe" ); $s->Set( "birth" , "22-10-1981" ); $s->Add();Maintenant, consultez votre table student dans votre base de données, vous devriez voir un nouvel étudiant nommé John Doe dans la liste des enregistrements.
Set(string:$attribute, any:$value)
La méthode Set() permet d’assigner une valeur à un attribut de votre classe.
Utilisation
$s = new student; $s->Set( "firstname" , "John" );Note : si vos attributs sont publiques vous pouvez y accéder directement sans passer par la méthode
Set()any: Get(string:$attribute)
La méthode Get() vous retournera la valeur d’un attribut de la classe.
Utilisation
$s = new student; $s->Set( "firstname" , "John" ); $fn = $s->Get( "firstname" ); echo $fn;Note : si vos attributs sont publics vous pouvez y accéder directement sans avoir à utiliser la méthode
Get().La méthode Add() va vous permettre d’insérer toutes les valeurs contenues dans votre objet dans votre table BDD.
Utilisation
$s = new student; $s->Set( "firstname" , "John" ); $s->Set( "lastname" , "Doe" ); $s->Set( "birth" , "22-10-1981" ); $s->Add();Note : la méthode
Add() se charge de traiter vos types de données suivant le type de champs en base de données.
La méthode Load() permet de récupérer toutes les informations liées à un enregistrement dont la clé primaire est fournie et les insère dans votre objet.
Utilisation
$s = new student; $s->Set( "id" ,1); $s->Load();Il est important de définir une valeur dans votre attribut correspondant à votre clé primaire avant d’appeler la méthode
Load().La méthode Update() permet la mise à jour d’un enregistrement dans votre table en prenant en compte la valeur de votre clé primaire.
Utilisation
$s = new student; $s->Set( "id" ,1); // Je renseigne l'élément que je veux charger $s->Load(); $s->Set( "firstname" , "Oliver" ); $s->Update(); // je modifie l'élément qui a pour id = 1
La méthode Delete() supprime un enregistrement en prenant en compte la valeur de la clé primaire contenu dans votre objet.
Utilisation
$s = new student; $s->Set( "id" ,1); // Je renseigne l'élément que je veux charger $s->Delete();
Qu’y a t-il de plus rébarbatif en PHP que de traiter un formulaire ? La méthode LoadForm() va vous faire gagner un temps considérable sur ce type de traitement.
Les conditions d’utilisation de la méthode sont :
$s = new student; $s->Set( "firstname" , "John" ); $fn = $s->Get( "firstname" ); echo $fn;L’exemple ci dessus va :
La méthode LoadArray() récupère les valeurs contenues dans un tableau associatif et les insère dans l’objet appelant la méthode.
Utilisation
$arr = new array (); $arr[ "firstname" ] = "Eikichi" ; $arr[ "lastname" ] = "Onizuka" ; $arr[ "birth" ] = "10-03-1980" ; $s = new student; $s->LoadArray($arr); $s->Add();L’exemple ci-dessus va :
LoadArray() fait correspondre les valeurs contenues dans le tableau avec les attributs de l’objet
array :IdList(string:$query, [ array :$bind])
La méthode IdList() retourne un tableau contenant une liste de clé primaire correspondant aux résultats de la requête passée en paramètre.
Le tableau optionnel $bind correspond à un tableau de bindage pour sécuriser votre requête avec des valeurs provenant de l’extérieur.
Utilisation
$query = "SELECT * FROM Student" ; $s = new student; $s->IdList($query);
array :Find( array :$array)
La méthode Find() retourne un tableau à deux dimensions contenant les résultats en prenant comme paramètre les valeurs du tableau $array.
Utilisation
$arr = array (); $arr[ "firstname" ] = "John" ; $s = new student; $res = $s->Find($arr);Le code ci-dessus va :
Find(), tous les enregistrements dont le champs firstname est John.$arr = array (); $arr[ "firstname" ] = "John" ; $arr[ "lastname" ] = "Doe" ;La méthode
Find() retourne tous les enregistrements dont le firstname est égal à John et dont le lastname est égal à Doe.array :StructList(string:$query, array :$returnFields, [ array :$bind],[string:$json])
$query : votre requête sql
$returnFields : tableau contenant une liste de chaîne, chaque chaîne étant le nom d’un champ que vous voulez récupérer.
$bind : Il peut arriver que pour des notions de sécurité vous soyez contraint d’avoir dans vos
requêtes des valeurs bindées. Ce tableau optionnel vous servira de correspondance entre les clés de bindage et les valeurs réelles.
$json : Si cette chaîne de caractère optionnelle a pour valeur “ json ” alors la fonction StructList() vous retournera un tableau de JSON.
Utilisation
$query = "SELECT id, firstname, birth FROM Student" ; $fields = array ( "id" , "firstname" , "birth" ); $s = new student; $res = $s->StructList($querry,$fields);L’exemple va :
$query $query $query = "SELECT id, firstname, birth FROM Student" ; $fields = array ( "id" , "firstname" , "birth" ); $s = new student; $res = $s->StructList($querry,$fields, "json" );L’exemple va :
$query $query $firstname = $_GET[ "firstname" ]; $query = "SELECT id, firstname, birth FROM Student WHERE firstname = :firstname" ; $fields = array ( "id" , "firstname" , "birth" ); $bind = array ( "firstname" => $firstname); $s = new student; $res = $s->StructList($querry,$fields,$bind);Dans cet exemple nous avons une variable $firstname qui provient d’une variable globale GET. Cela implique que n’importe qui peut la modifier.
[ array :]Sql(string:$query,[string:$returnValue...], [ array :$bind])
La méthode Sql() lance une requête SQL, la sécurise avec un tableau de bindage et permet même d’obtenir un tableau de résultats.
Utilisation
$req = "UPDATE Student SET birth = '1981-10-22' " ; $s->Sql($req);L’exemple met à jour le champs birth de tous les enregistrements de la table student.
$s = new student; $req = "SELECT * FROM Student" ; $res = $s->Sql($req, "id" );L’exemple retourne la liste des id dans la variable
$res
$s = new student; $req = "SELECT * FROM Student" ; $res = $s->Sql($req, "id" , "firstname" , "lastname" );L’exemple retourne la liste des id , firstname et lastname de la table Student.
$s = new student; $bind = array ( "id" =>$_GET[ "id" ]); $req = "SELECT * FROM Student WHERE id = :id" ; $res = $s->Sql($req, "id" , "firstname" , "lastname" ,$bind);
SelectList(string:$selectName, string:$fieldValue, string: $fieldOptionText..., [ array :$config],[int:$selectId])
La fonction SelectList() permet de créer une liste déroulante HTML (balise select) en relation avec votre base de données.
$selectName : Correspond à la valeur de l’attribut name de la balise select $fieldValue : Correspond à la valeur du champs qui sera inséré dans l’attribut value de la balise option $fieldOptionText : Correspond à la valeur des champs qui seront affichés dans la liste $config : Tableau optionnel de configuration $selectId : Si le dernier paramètre est un entier alors Genos va présélectionner cette valeur. Utilisation :
$s = new student; $s->SelectList( "id_student" , "id" , "firstname" , "lastname" );Résultat HTML
Résultat HTML
$s = new student; $config = array (); $config[ "preselect" ] = "Choose student" ; $config[ "preselectVal" ] = 0; $s->SelectList( "id_student" , "id" , "firstname" , "lastname" ,$config,2);Rendu HTML
$s = new student; $config = array (); $config[ "class" ] = "form-control myclass myclass2" ; $s->SelectList( "id_student" , "id" , "firstname" , "lastname" ,$config,2);Rendu HTML
Attr
$s = new student; $config = array (); $config[ "attr" ][ "id" ] = "myIdTag" ; $s->SelectList( "id_student" , "id" , "firstname" , "lastname" ,$config,2);Le rendu HTML :
$s = new student; $config = array (); $query = "SELECT id, firstname, lastname, (SELECT COUNT(*) FROM Student) as nb FROM Student WHERE id < :id" ; $config[ "sql" ] = $query; $config[ "bind" ] = array ( "id" ,10); $s->SelectList( "id_student" , "id" , "firstname" , "lastname" , "nb" ,$config,2);Rendu HTML