Geek Help Me ! Tutoriels, Dossiers, News...

  Accueil Dossiers Développement [Développement] : Générer vos classes PHP automatiquement
Bookmark and Share
[Développement] : Générer vos classes PHP automatiquement
Note des utilisateurs: / 2
MauvaisTrès bien 
Écrit par Lordsirius   
Jeudi, 08 Juillet 2010 22:26

Bonjour à vous amis développeur,

Vous débutez en programmation objet en PHP ? Vous ne savez pas trop comment structurer vos classes ainsi que méthodes et proprité membre de la classe.

Le site http://www.phpobjectgenerator.com est alors fait pour vous. En effet ce site vous permettra de générer vos classes d'accès BDD correpondant au célèbre CRUD (CREATE, READ, UPDATE et DELETE) de la programmation.

Mettons que nous souhaitons générer une classe voiture, ayant les propriétés suivantes :

- immatriculation : immatriculation de la voiture
- marque : marque de la voiture
- modele : modele de la voiture
- typemotorisation : indique le type de motorisation (Essence, Diesel, SP95, SP98, GPL, Electrique, Hybride, Biocarburant ...)

Vous vous rendez donc sur le site http://www.phpobjectgenerator.com , vous remplissez alors les champ du formulaire en indiquant le nom de la classe souhaité, le nom des propriétés de votre classe. Vous validez via le bouton submit et hop magie quand tu nous tiens, vous arrivez sur une page vous proposant soit de copier le code de la classe soit de le télécharger en tant que fichier zip.

Des options vous permettent également de choisir avec quel librairie vous souhaitez accéder à votre base de donné (POG, télécharger le fichier class.pog_base.php, PDO MYSQL, ...)

Ainsi, sera généré les requêtes SQL permettant de créer la table au sein de votre SGBD favori ainsi que la classe permettant de réaliser les accès BDD corresponant. Pratique pour débuter en POO php et commencer à acquérir une logique de travail.

Je vous laisse juge avec l'exemple de génération concernant l'exemple cité ci-dessus.

<?php
/*
 This SQL query will create the table to store your object.

 CREATE TABLE `voiture` (
 `voitureid` int(11) NOT NULL auto_increment,
 `immatriculation` VARCHAR(255) NOT NULL,
 `marque` VARCHAR(255) NOT NULL,
 `modele` VARCHAR(255) NOT NULL,
 `typemotorisation` INT NOT NULL,
 `nbportes` INT NOT NULL, PRIMARY KEY  (`voitureid`)) ENGINE=MyISAM;
*/

/**
* <b>voiture</b> class with integrated CRUD methods.
* @author Php Object Generator
* @version POG 3.0e / PHP5
* @copyright Free for personal & commercial use. (Offered under the BSD license)
* @link http://www.phpobjectgenerator.com/?language=php5&wrapper=pog&objectName=voiture&attributeList=array+%28%0A++0+%3D%3E+%27immatriculation%27%2C%0A++1+%3D%3E+%27marque%27%2C%0A++2+%3D%3E+%27modele%27%2C%0A++3+%3D%3E+%27typemotorisation%27%2C%0A++4+%3D%3E+%27nbportes%27%2C%0A%29&typeList=array+%28%0A++0+%3D%3E+%27VARCHAR%28255%29%27%2C%0A++1+%3D%3E+%27VARCHAR%28255%29%27%2C%0A++2+%3D%3E+%27VARCHAR%28255%29%27%2C%0A++3+%3D%3E+%27INT%27%2C%0A++4+%3D%3E+%27INT%27%2C%0A%29
*/
include_once('class.pog_base.php');
class voiture extends POG_Base
{
 public $voitureId = '';

 /**
 * @var VARCHAR(255)
 */
 public $immatriculation;
 
 /**
 * @var VARCHAR(255)
 */
 public $marque;
 
 /**
 * @var VARCHAR(255)
 */
 public $modele;
 
 /**
 * @var INT
 */
 public $typemotorisation;
 
 /**
 * @var INT
 */
 public $nbportes;
 
 public $pog_attribute_type = array(
 "voitureId" => array('db_attributes' => array("NUMERIC", "INT")),
 "immatriculation" => array('db_attributes' => array("TEXT", "VARCHAR", "255")),
 "marque" => array('db_attributes' => array("TEXT", "VARCHAR", "255")),
 "modele" => array('db_attributes' => array("TEXT", "VARCHAR", "255")),
 "typemotorisation" => array('db_attributes' => array("NUMERIC", "INT")),
 "nbportes" => array('db_attributes' => array("NUMERIC", "INT")),
 );
 public $pog_query;
 
 
 /**
 * Getter for some private attributes
 * @return mixed $attribute
 */
 public function __get($attribute)
 {
 if (isset($this->{"_".$attribute}))
 {
 return $this->{"_".$attribute};
 }
 else
 {
 return false;
 }
 }
 
 function voiture($immatriculation='', $marque='', $modele='', $typemotorisation='', $nbportes='')
 {
 $this->immatriculation = $immatriculation;
 $this->marque = $marque;
 $this->modele = $modele;
 $this->typemotorisation = $typemotorisation;
 $this->nbportes = $nbportes;
 }
 
 
 /**
 * Gets object from database
 * @param integer $voitureId 
 * @return object $voiture
 */
 function Get($voitureId)
 {
 $connection = Database::Connect();
 $this->pog_query = "select * from `voiture` where `voitureid`='".intval($voitureId)."' LIMIT 1";
 $cursor = Database::Reader($this->pog_query, $connection);
 while ($row = Database::Read($cursor))
 {
 $this->voitureId = $row['voitureid'];
 $this->immatriculation = $this->Unescape($row['immatriculation']);
 $this->marque = $this->Unescape($row['marque']);
 $this->modele = $this->Unescape($row['modele']);
 $this->typemotorisation = $this->Unescape($row['typemotorisation']);
 $this->nbportes = $this->Unescape($row['nbportes']);
 }
 return $this;
 }
 
 
 /**
 * Returns a sorted array of objects that match given conditions
 * @param multidimensional array {("field", "comparator", "value"), ("field", "comparator", "value"), ...} 
 * @param string $sortBy 
 * @param boolean $ascending 
 * @param int limit 
 * @return array $voitureList
 */
 function GetList($fcv_array = array(), $sortBy='', $ascending=true, $limit='')
 {
 $connection = Database::Connect();
 $sqlLimit = ($limit != '' ? "LIMIT $limit" : '');
 $this->pog_query = "select * from `voiture` ";
 $voitureList = Array();
 if (sizeof($fcv_array) > 0)
 {
 $this->pog_query .= " where ";
 for ($i=0, $c=sizeof($fcv_array); $i<$c; $i++)
 {
 if (sizeof($fcv_array[$i]) == 1)
 {
 $this->pog_query .= " ".$fcv_array[$i][0]." ";
 continue;
 }
 else
 {
 if ($i > 0 && sizeof($fcv_array[$i-1]) != 1)
 {
 $this->pog_query .= " AND ";
 }
 if (isset($this->pog_attribute_type[$fcv_array[$i][0]]['db_attributes']) && $this->pog_attribute_type[$fcv_array[$i][0]]['db_attributes'][0] != 'NUMERIC' && $this->pog_attribute_type[$fcv_array[$i][0]]['db_attributes'][0] != 'SET')
 {
 if ($GLOBALS['configuration']['db_encoding'] == 1)
 {
 $value = POG_Base::IsColumn($fcv_array[$i][2]) ? "BASE64_DECODE(".$fcv_array[$i][2].")" : "'".$fcv_array[$i][2]."'";
 $this->pog_query .= "BASE64_DECODE(`".$fcv_array[$i][0]."`) ".$fcv_array[$i][1]." ".$value;
 }
 else
 {
 $value =  POG_Base::IsColumn($fcv_array[$i][2]) ? $fcv_array[$i][2] : "'".$this->Escape($fcv_array[$i][2])."'";
 $this->pog_query .= "`".$fcv_array[$i][0]."` ".$fcv_array[$i][1]." ".$value;
 }
 }
 else
 {
 $value = POG_Base::IsColumn($fcv_array[$i][2]) ? $fcv_array[$i][2] : "'".$fcv_array[$i][2]."'";
 $this->pog_query .= "`".$fcv_array[$i][0]."` ".$fcv_array[$i][1]." ".$value;
 }
 }
 }
 }
 if ($sortBy != '')
 {
 if (isset($this->pog_attribute_type[$sortBy]['db_attributes']) && $this->pog_attribute_type[$sortBy]['db_attributes'][0] != 'NUMERIC' && $this->pog_attribute_type[$sortBy]['db_attributes'][0] != 'SET')
 {
 if ($GLOBALS['configuration']['db_encoding'] == 1)
 {
 $sortBy = "BASE64_DECODE($sortBy) ";
 }
 else
 {
 $sortBy = "$sortBy ";
 }
 }
 else
 {
 $sortBy = "$sortBy ";
 }
 }
 else
 {
 $sortBy = "voitureid";
 }
 $this->pog_query .= " order by ".$sortBy." ".($ascending ? "asc" : "desc")." $sqlLimit";
 $thisObjectName = get_class($this);
 $cursor = Database::Reader($this->pog_query, $connection);
 while ($row = Database::Read($cursor))
 {
 $voiture = new $thisObjectName();
 $voiture->voitureId = $row['voitureid'];
 $voiture->immatriculation = $this->Unescape($row['immatriculation']);
 $voiture->marque = $this->Unescape($row['marque']);
 $voiture->modele = $this->Unescape($row['modele']);
 $voiture->typemotorisation = $this->Unescape($row['typemotorisation']);
 $voiture->nbportes = $this->Unescape($row['nbportes']);
 $voitureList[] = $voiture;
 }
 return $voitureList;
 }
 
 
 /**
 * Saves the object to the database
 * @return integer $voitureId
 */
 function Save()
 {
 $connection = Database::Connect();
 $this->pog_query = "select `voitureid` from `voiture` where `voitureid`='".$this->voitureId."' LIMIT 1";
 $rows = Database::Query($this->pog_query, $connection);
 if ($rows > 0)
 {
 $this->pog_query = "update `voiture` set 
 `immatriculation`='".$this->Escape($this->immatriculation)."', 
 `marque`='".$this->Escape($this->marque)."', 
 `modele`='".$this->Escape($this->modele)."', 
 `typemotorisation`='".$this->Escape($this->typemotorisation)."', 
 `nbportes`='".$this->Escape($this->nbportes)."' where `voitureid`='".$this->voitureId."'";
 }
 else
 {
 $this->pog_query = "insert into `voiture` (`immatriculation`, `marque`, `modele`, `typemotorisation`, `nbportes` ) values (
 '".$this->Escape($this->immatriculation)."', 
 '".$this->Escape($this->marque)."', 
 '".$this->Escape($this->modele)."', 
 '".$this->Escape($this->typemotorisation)."', 
 '".$this->Escape($this->nbportes)."' )";
 }
 $insertId = Database::InsertOrUpdate($this->pog_query, $connection);
 if ($this->voitureId == "")
 {
 $this->voitureId = $insertId;
 }
 return $this->voitureId;
 }
 
 
 /**
 * Clones the object and saves it to the database
 * @return integer $voitureId
 */
 function SaveNew()
 {
 $this->voitureId = '';
 return $this->Save();
 }
 
 
 /**
 * Deletes the object from the database
 * @return boolean
 */
 function Delete()
 {
 $connection = Database::Connect();
 $this->pog_query = "delete from `voiture` where `voitureid`='".$this->voitureId."'";
 return Database::NonQuery($this->pog_query, $connection);
 }
 
 
 /**
 * Deletes a list of objects that match given conditions
 * @param multidimensional array {("field", "comparator", "value"), ("field", "comparator", "value"), ...} 
 * @param bool $deep 
 * @return 
 */
 function DeleteList($fcv_array)
 {
 if (sizeof($fcv_array) > 0)
 {
 $connection = Database::Connect();
 $pog_query = "delete from `voiture` where ";
 for ($i=0, $c=sizeof($fcv_array); $i<$c; $i++)
 {
 if (sizeof($fcv_array[$i]) == 1)
 {
 $pog_query .= " ".$fcv_array[$i][0]." ";
 continue;
 }
 else
 {
 if ($i > 0 && sizeof($fcv_array[$i-1]) !== 1)
 {
 $pog_query .= " AND ";
 }
 if (isset($this->pog_attribute_type[$fcv_array[$i][0]]['db_attributes']) && $this->pog_attribute_type[$fcv_array[$i][0]]['db_attributes'][0] != 'NUMERIC' && $this->pog_attribute_type[$fcv_array[$i][0]]['db_attributes'][0] != 'SET')
 {
 $pog_query .= "`".$fcv_array[$i][0]."` ".$fcv_array[$i][1]." '".$this->Escape($fcv_array[$i][2])."'";
 }
 else
 {
 $pog_query .= "`".$fcv_array[$i][0]."` ".$fcv_array[$i][1]." '".$fcv_array[$i][2]."'";
 }
 }
 }
 return Database::NonQuery($pog_query, $connection);
 }
 }
}
?>

Mise à jour le Jeudi, 08 Juillet 2010 22:49
 
web design - referencement