[PHP5] ORMAPPER 4 CRUD

Utilisateur anonyme - 9 déc. 2008 à 18:12
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 13 janv. 2009 à 14:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/48659-php5-ormapper-4-crud

Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
13 janv. 2009 à 14:22
Euh je viens juste de voir tes remarques et euh je sais pas pq je fais comme ça...
Je suis en train de préparer une nouvelle mouture avec notamment les FK. Je me penche sur ta suggestion juste après :)
cs_dorian91 Messages postés 41 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 15 mars 2009
10 janv. 2009 à 01:07
Euh en fait j'ai du halluciner car tu utilise des requetes prepare (dsl fatigué ^^)
cs_dorian91 Messages postés 41 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 15 mars 2009
10 janv. 2009 à 01:04
Re salut
Une autre petite suggestion pour tes requetes PDO utilise des requetes préparé comme ca tu evite les injections sql
A+
cs_dorian91 Messages postés 41 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 15 mars 2009
9 janv. 2009 à 12:12
Salut,
J'ai une petite suggestion quand tu génère la classe modele pourquoi ne fais tu pas une classe abstraite (Ex : abstract Crud) qui contient toutes les méthodes et tu fais etendre ta classe modele. Ca évite la redondance de code au pire tu génère juste le constructeur qui passe les paramètres qui faut a la classe Crud

Sinon j'ai pas encore testé je te dis mon avis apres mes test
A+
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
4 janv. 2009 à 23:41
La prochaine release arrive bientôt !!! :)
Juste pour savoir si ça interesse qqun ou si ya des erreurs ou des choses mal pensées/mal faites dites le moi ça serait sympa...
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
17 déc. 2008 à 22:37
Au secoursssss la prévisualisation met à jour sans mon avis :/
La mise en page du texte était degeu je l'ai passée dans l'explication de la source en ajoutant le date histoire d'avoir un espèce de versionning Au zecoursss les zadmineu >_<
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
10 déc. 2008 à 12:10
Alors le début vient de la config serveur :
http://www.manuelphp.com/php/ini.zend.ze1-compatibility-mode.php
De mon côté je ne gère pas le clonage de la classe PDO
http://fr.php.net/pdo

Ensuite la modif pour donner database en string euh ... autant le faire à la mode PDO ^^ je modifierais pour ceci ...
$oPDOStatement->bindParam(':database', $sDatabase, PDO::PARAM_STR);
Il doit se vautrer sur le type de la variable.
Ce qui est une bonne remarque pour la classe Crud car je ne donne aucun type alors que je les ai!

Pour THE TYPE IS UNDEFINED, tu as bien fait de chercher dans VarType.cls.php
En fait, cette classe fait correspondre à un type de champs contenu dans DATA_TYPE une classe de gestion de type. Ta modif pour ajouter ces types semble correcte.

Je veux bien la structure de la table qui fait planter le serialize du model de la classe si c'est possible (pour comprendre pq ca pete un cable) ^_^
Le serialize est il est vrai lourd mais me sert a être réutilisable en JS! (c'est le seul moyen que je connaisse)

Pour Le Crud, je suis parti du principe que l'on ne change QUE les champs n'étant pas une clef primaire.
C :
Pour une insertion on met une instance de la classe Type "contenant" une instance de la classe Null dans la clef primaire du modèle. Ensuite, je construit la requete d'insertion.

R :
Pour un retrieve, je pars du principe qu'on connait que les champs d'une instance du modele/controleur.

PS: Au retour de la requete, je ne cast pas le ResultSet car a mon sens c'est un non sens (et une perte de perf). il revient sous forme de string il le reste puisque c'est sensé être affiché à 70% des cas d utilisation. A voir un param pour "forcer" le typage du retour!

U :
Pour un update, le fonctionnement est pareil que R

D :
Pour un delete, le fonctionnement est pareil que R

En gros je pars du principe que qd on veut qqch on fait une instance du model/controleur et on balance la méthode!

PS :
Il faut effacer les lignes euh ... 166 a 169 de Crud.cls.php (c'est du debug :p)
Utilisateur anonyme
10 déc. 2008 à 11:21
J'ai cette erreur :

Fatal error: Cannot clone object of class PDO due to 'zend.ze1_compatibility_mode' in ..\index.php on line 17

En mettant ça : $oPDO =& new PDO ... ça passe (PHP 5.2.6)

---

Après la partie sélection des tables ne passe pas chez moi - en remplaçant par ce code ça passe :

$sQuery = 'SELECT TABLE_NAME FROM TABLES WHERE TABLE_SCHEMA=\''.$sDatabase.'\'';
$aResultTables = $oPDO->query($sQuery)->fetchAll();

---

Après j'ai une erreur de type : Connection failed: THE TYPE IS UNDEFINED. J'ai rajouté ces définitions dans VarType.cls.php :

'text'=>'String','blob'=>'String','timestamp'=>'Integer','mediumint' => 'Integer'

---

En regardant le résultat je vois :
const MODEL='a:6:{i:1;O:5:"Field":9:{s:20:"

Y'à une erreur quelque part car le serialize n'est pas finit.

Sinon serialize et unserialize c'est une perte de perfs, regardes du côté de : http://fr2.php.net/manual/en/function.var-export.php

---

Ptite remarque générale, dommage qu'au niveau de ton modèle tu ne gère pas les datasets - pour le moment tu est au niveau des entités, mais je ne vois pas comment tu peux gérer une requette de type select ... where ...

---

Je reste dans le coin ;),

Akh
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
10 déc. 2008 à 10:26
Merci beaucoup :)
J'attendais ce premier commentaire avec beaucoup d'espoir et ça fait vraiment plaisir!
Je modifierais petit a petit la source pour y ajouter un exemple, l'utilisation de la classe Database pour l'index >_< et une plus grande richesse de "composants" donc si ça vous intéresse restez dans le coin ^^
Utilisateur anonyme
9 déc. 2008 à 18:12
Je lis le code et je te fais un retour, mais à première vue ça me semble très bien construit :)