begin process at 2012 02 09 11:20:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > CLASS HELPER

CLASS HELPER


 Information sur la source

Note :
Aucune note
Catégorie :Class et Objet ( POO ) Classé sous :class, helper Niveau :Débutant Date de création :27/01/2006 Vu / téléchargé :2 258 / 114

Auteur : galadriann

Ecrire un message privé
Site perso
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Je devais creer des classes pour mon projet ... environ 25 tables (1 classe par table) donc environ une centaine de champs a me palucher a la main ... et ce juste pour creer la structure des classes ...

Je me suis donc dit ...  pourquoi ne pas faire un petit script qui preparerais le tout pour moi...

Voici donc mon petit code sans pretention... mais qui pourrais etre utile a quelqu'un ... on ne sait jamais ..
Il permet aussi de presenter une couche d'abstraction DB fantastique : EZ_SQL ...

Il faut bien sur changer les parametres de connexion dans le fichier ClassHelper.php.
En gros, le fichier cree un repertoire "_Class" pour y stocker les classes puis genere un fichier pour chaque classe "class.nomtable" avec un squelette de fonction...

Il y a surement moyen d'optimiser le bidule ... mais on ne l'utilise normalement qu'une seule fois .. ;-)

Source

  • // exemple de classe generee
  • <?php
  • require_once('../inc/ez_sql.php');
  • class department_class ()
  • {
  • private $id_dept;
  • private $dier_code;
  • private $dept_name;
  • function __construct()
  • {
  • }
  • function create_department()
  • {
  • }
  • function read_department()
  • {
  • }
  • function update_department()
  • {
  • }
  • function destroy_department()
  • {
  • }
  • }
  • ?>
// exemple de classe generee
<?php 

require_once('../inc/ez_sql.php');

class department_class ()
{

	 private $id_dept;
	 private $dier_code;
	 private $dept_name;


	function __construct()
	{
	}

	function create_department()
	{
	}

	function read_department()
	{
	}

	function update_department()
	{
	}

	function destroy_department()
	{
	}

}

?>

 Conclusion

Je met dans debutant parce que pas trop complexe quand meme ;-)

Remarque, suggestion ...  

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

COMMENT SEPARER DES VALEURS INDEX DANS UNE VARIABLE CSV
SIMPLE TABLE FUNCTION

 Sources de la même categorie

CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter
Source avec Zip SIMPLETEMPLATE par thunderhunter
Source avec Zip Source avec une capture VOIR QUI VISITE VOTRE SITE par Dariumis
Source avec Zip CLASS SIMPLE CBASEDONNEE par smag42

 Sources en rapport avec celle ci

Source avec Zip CLASS SIMPLE CBASEDONNEE par smag42
CURRYFICATION DE FONCTIONS par TychoBrahe
Source avec Zip CLASS MYSQL 5/PHP5 AVEC GESTION DES EXCEPTION ET DES REQUÊTE... par devil_may_cry
CLASS GALERIE PHOTO par Xiryl
Source avec Zip Source avec une capture [POO] MENU XHTML HORIZONTAL EXTENSIBLE (MENUEXTENSIBLEX.PHP) par Dariumis

Commentaires et avis

Commentaire de malalam le 28/01/2006 10:21:44 administrateur CS

Hello,

manque pas un truc ? Genre la classe d'abstraction bdd...? ;-)

Commentaire de malalam le 28/01/2006 10:24:36 administrateur CS

Ensuite, sans vouloir paraître trop critique... : là, tu crées 25 classes différentes, avec 4 méthodes différéntes...qui font la même chose pour chaque classe...c'est pas très POO ça. Manque une classe d'abstraction générique, dans ce cas. Et pourquoi pas une interface. Et tes méthodes devraient avoir le même nom.

Commentaire de galadriann le 28/01/2006 20:11:32

Je comprend ce que tu veux dire ...
La classe d'abstraction c'est EZ_SQL ..  j'ai hesite longtemps pour voir si je l'ajoutais ou pas ...
Le but ici c'etais pour moi d'avoir un squelette avec mes variables deja entree pas de faire un classe complete ... maintenant je dois encore terminer les classes a la main...

Maintenant oui il y a les memes noms pour les methodes...  je ne vois pas comment faire autrement puisque je dois pouvoir acceder chaque table...

Maintenant pour la classe d'abstraction, il suffirais d'ajouter un require_once('./inc/ez_sql') dans chaque classe et c'est parti ...

Voici un extrait d'une classe que j'ai faite avant de faire ce helper :

class asset_type extends asset_class {

private $id_assettype;
private $id_class;
private $classtype;
private $modeltype;
private $partnumber;

function __construct()
{

global $db;
$db->select('assetmanagement');
$db->show_errors();

}

function get_assettype($id_assettype = null)
{
global $db;
$where='';
if (isset($id_assettype))
        {
            $where='WHERE id_assettype="'.$id_assettype.'"';
        }
$sql="SELECT id_assettype, partnumber, modeltype, id_class FROM assetype $where";
        $res=$db->get_results($sql);
        
if ($debug) {$db->debug();}
        return($res);

}

maintenant je debute en POO ... donc si tu as des idees ...  (j'ai meme un projet ou tu pourrais m'aider si tu veux ...)

a+

Commentaire de galadriann le 28/01/2006 20:15:07

j'oubliais ... je fais des classes differentes car chaque table va interagir differemment avec d'autres ... certaines vont appeller un objet existant (genre asset -> asset_type) et d'autre vont etendre d'autres tables (pc -> asset ou  server -> pc -> asset) ...

Si tu as le temps, je te montre le design complet de la base et tu me dis ce que tu en penses ...

a+

Commentaire de Merlin59 le 30/01/2006 16:10:35

"get_assettype" devrait s'écrire "getAssetType" si on respecte les convention de nommage Objet

De plus, ton helper devrait générer automatiquement les set et les get pour chaque propriété, on ne devrait pas les passer en paramètre de la fonction.

Commentaire de FhX le 30/01/2006 16:22:40

Moi, ce qui me fait le plus peur, c'est quand je vois ca :
"global $db;"

La dernière fois que j'ai fait ca, j'ai eu le droit à une belle erreur dans une langue totalement inconnu :)
Sachant que $db est un objet, utilise plutôt le singleton pour pouvoir récupérer ton objet plus facilement et surtout plus rapidement ! (car tu gagnes des ressources au passage).


Pareil :
if (isset($id_assettype))
        {
            $where='WHERE id_assettype="'.$id_assettype.'"';
        }
$sql="SELECT id_assettype, partnumber, modeltype, id_class FROM assetype $where";
Que c'est bien de la ressource de perdu :)
Regarde plutot :
$sql = 'SELECT id_assettype, partnumber, modeltype, id_class FROM assetype ';
if (isset($id_assettype) ) {
    $sql .= 'WHERE id_assettype="'.$id_assettype.'"';
}
$db->get_results($sql);


Au passage, si tu dois faire ce morceau de code :
if ($debug) {$db->debug();}
        return($res);

}
A chaque fois que tu fais une requète, c'est que ta classe est incomplète. Tu dois faire un test d'erreur dans ta classe de DB et certainement pas à l'extérieur. Sinon tout le coté objet perd son interêt ici ! (en plus du reste).

Bref, je rentre pas dans le code car au peu que j'ai vu, je préfère m'arreter la :)
Si tu veux des idées de classes SQL, tu peux les trouver facilement. C'est certes un peu plus compliqué mais pleinement fonctionnel :)

Commentaire de galadriann le 31/01/2006 08:34:47

Merci pour les commentaires. ...  

Comme je l'ai preciser, le bout de code que j'ai pose c'etais avant de me mettre vraiment a la POO...  J'ai fait ce petit helper justement pour m'aider a commencer a creer des SQUELETTES de classes (m'evitant la longue et penible tache de taper tout les champs de table a la main).

Ensuite, je sais que le global $db ca fait peur mais je ne vois pas comment faire ...
$db et debug() viennent tout les 2 de la couche d'abstraction (EZ_SQL).  

FhX : "Sachant que $db est un objet, utilise plutôt le singleton .."
??? peux-tu preciser ?

a+

Commentaire de malalam le 31/01/2006 09:24:49 administrateur CS

Il faudrait que tu passes ton objet $db à ta classe
public function __construct (& $db, ...)

Commentaire de duncane le 31/01/2006 21:23:40

Je n'ai personnellement pas eu le temps de jetter un coup d'oeuil à la classe SQL, mais pour que tu doives utiliser des trucs pareils, il doit y avoir un ou deux truc pas très objet dans celle ci :p

Commentaire de FhX le 31/01/2006 23:10:14

Ah non !

Pour passer un objet par référence, il faut utiliser le singleton (soit en francais l'instance unique) soit le multiton (soit l'instance unique multiple).

Le singleton (ou le multiton) va te permettre d'utiliser ton objet dans un contexte global. En effet, au lieu de faire :
$db = new mysql;
tu va devoir faire :
$db = mysql::NomDeLaMethodeQuiCreerLinstance();

De ce fait, c'est un peu comme si tu faisais une copie d'objet. Un clone en quelque sorte en PHP4 :)
Donc après, tu peux appeler ton objet de n'importe où sans rien perdre au niveau vitesse contrairement à un passage par référence via une méthode de classe où d'une fonction.

De plus, toutes les méthodes font passer les arguments par références Malalam, je te l'ai déja dit :) Donc le & n'a plus lieu d'être =)

D'ailleurs, un constructeur de classe quel qu'il soit n'a PAS à récupérer un objet de connection SQL dans ses arguments, ni même dans ses propriétés. Ca reste de la duplication sinon, et ca n'apporte rien mise à part une perte de mémoire :)

Voila voila !

Commentaire de kankrelune le 06/02/2006 12:15:38

Les instances unique sont très utile pour des class comme les class de base de données, de débugage ou de gestion des erreurs, etc... personnellement je l'utilise énormément comme suit... .. .

function &singleInstance()
{
     static $monInstanceUniqueMYSQL = null;
     if(empty($monInstanceUniqueMYSQL)){
         $monInstanceUniqueMYSQL =& new mysql();
     }
     return $monInstanceUniqueMYSQL;
}

après comme l'a dit FhX... .. .

$db =& mysql::singleInstance();

Ainsi on travail toujours à partir du même objet... et le deuxième avantage c'est coté perf... .. .

@ tchaOo°

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

class,PDF,XLS et boucles..... [ par booth ] bonjour!j'ai un méga problème...je dois générer un PDF et une grillle excel toutes deux issues d'un moteur de recherche...pour le moteur de recherche Retouches sur un scripts [ par apz ] salut,ce script php, un guestbook, est le livre d'or que je cherchais.mais voila il se base sur les Class, que je ne connais pas desormais.alors je vo fatal error sur chargement de class [ par fabrice_pi ] salut à tous,j'utilise une classe PHP pour faire mes taleaux en html. depuis peu j'ai l'erreur suivante :Fatal error: Cannot instantiate non-existent Class POO retourné le nom de l'objet [ par MeTh ] Bonjour,Comment retourné le nom de l'objet déclaré?exemple :$monobjet = new GridR();comment recuperé $monobjet dans ma class?Merci Include, class et array [ par Hades5k ] Bonjour! J'ai un petit problème à utiliser un array dans un fichier que j'inclus... voici un peu le code : &lt;?php $classNames = array(); include_onc Problem d'affichage de resultat de requete sous forme de tableau [ par jbcaiz ] explication : je fais un requete de recherche dans ma base, qui doit normalement me sortir plusieur résultat.je veux que ces résultat s'affiche dans u Serveur SMTP [ par Marion0904 ] Bonsoir, J'essai d'nvoyer des mails en utilisant la class phpmailer (disponible sur&nbsp; http://phpmailer.sourceforge.net/). J'incu la class php mail templates avec poo [ par lesnes ] bonjours je reprogramme totalement mon site en poo et je souhaiterai utiliser les templates mais l'on ne peut pas faire appel a une class exterieur a Affichage page par page [ par Leneuf8000 ] Bonjour, j'aimerai r&#233;aliser un affichage page par page. En fait je voudrai que tout soit g&#233;rer dans le m&#234;me fichier.&nbsp; Ainsi pour l Erreur de syntaxe [ par Leneuf8000 ] Bonjour everybody, la, j'ai un probl&#232;me de syntaxe, je ne comprends pas !!! Voici la requ&#234;te qui pose probl&#232;me : &nbsp;&nbsp;&nbsp; &n


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,508 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales