Class helper

Soyez le premier à donner votre avis sur cette source.

Vue 3 118 fois - Téléchargée 153 fois

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 :


// 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 ...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

kankrelune
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

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°
FhX
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
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 !
cs_duncane
Messages postés
1
Date d'inscription
lundi 3 mars 2003
Statut
Membre
Dernière intervention
31 janvier 2006

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
malalam
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Il faudrait que tu passes ton objet $db à ta classe
public function __construct (& $db, ...)
galadriann
Messages postés
87
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
12 juin 2006

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+

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.