Derniers journaux de Code34 :
- [10/05@09:13] Sarko et Bolloré
- [19/04@20:09] Api php5 mysql object = phpmyobject
- [16/04@18:10] Girafon à nouveau aux enchères
- [20/03@12:02] Hébergeur Girafon mis aux enchères
- [27/06@11:03] Pétition contre le système de modération de Linuxfr
- [26/06@00:02] Résister sur Linuxfr
- [25/06@13:38] Free Fait payer les freebox !
- [28/05@18:19] La poste: première lettre recommandée électronique dès aujourd'hui
- [28/05@18:17] Le président d'Iliad (Free) écroué pour proxénétisme aggravé
- [25/05@13:36] The wall - Logo
- [30/04@15:29] Ryzom, la beta est sortie (sous win)
- [17/04@11:35] Chmod: le blues du dimanche matin ...
- [30/03@17:07] Slackware: installer postfix, et le smtp auth: Cyrus Sasl 2
- [25/03@11:14] Logo BUG ORBITER - le logiciel libre c'était mieux avant
- [24/03@23:06] Apache/Php, vrai challenge
- [20/03@13:30] Debian: Mise à jour de kernel via apt
- [20/03@08:25] Google: parler vous français ?
- [13/03@22:00] Proposition pour le système d'xp [+] ou [-]
- [04/03@20:48] Location de Serveur
- [04/03@10:46] Hebergement de serveur Uc
Petit rappel:
=========
Phpmyobject permet de générer des objets php en mappant des bases mysql
Les grandes nouveautés de cette version:
=================================
- Un parser SQL
- Un nouveau controleur qui gère l'unicité des objets en se basant sur les primary keys beaucoup plus léger et performant
- Un mappage qui permet de manipuler plusieurs types d'objets
- des interfaces controleur et parser
Cette version marche bien, et je vous invite à l'essayer dès maintenant.
un extrait du README:
$toto = new mycontroler();
$toto->queryControler("SELECT * from db_user,db_town where db_user.town_id=db_town.town_id;");
$map = $toto->getMap();
In this example, the controler will do:
one object user, and one object town
you can after this manipulate them like this:
foreach ($map as $row){
echo($row[id]); /* will print the linking join id */
echo($row[table]); /* will print the object type refer to table */
echo($row[object]); /* will print the object */
}
object can be acces like this:
=============================
$row[object]->getListAttribute(); /* will return all the attribute of the object */
$row[object]->getAttribute($name); /* will return the value of one attribute */
$row[object]->setAttribute($attributename, $attributevalue) /* will set the attribute value */
http://sourceforge.net/project/showfiles.php?group_id=194398
> Lire le journal (20 commentaires, moyenne: 1,8).
Intérêt?
Bonsoir,
Au fond quel intérêt par rapport à ce qui se fait déjà?
Notamment Le package MDB2 de Pear http://pear.php.net/package/MDB2 ?
Bastien - http://blog.tribuleblanc.com/
-
[^]Re: Intérêt?
-
[^]Re: Intérêt?
Posté par Code34 (page perso, ) le 03/06/2007 à 19:58. (lien). Évalué à 2.Ca ne fait pas la même chose que Pear.
Plus de détails par rapport aux autres projets dans mon post précédent
http://linuxfr.org/~Code34/24247.html
-
[^]Re: Intérêt?
Posté par Cyrille Pontvieux (Jabber id, page perso, ) le 04/06/2007 à 10:31. (lien). Évalué à 2.MDB2 ne fait pas de mapping Objet. C'est plutôt un espèce de wrapper d'appel à des bases relationnelles (qu'il fait très bien d'ailleurs).
Le seul souci avec MDB2 c'est pour la gestion du modèle de la base, son schéma. Le module MDB2_Schema (qui permet de gérer son schéma voire ses données, faire des migration de shéma, du reverse...) est encore en bêta et porte très bien sa dénomination malheureusement : ça avance très peu. Manque de développeurs, de motivation ? Certainnement les deux.
On peut ajouter un mapping objet au dessus de MDB2, mais c'est n'est pas celui-ci qui permet de le gérer. PHPMyObject est un peu l'équivalent d'Hibernate en Java. C'est encore assez rudimentaire mais largement utilisable et avec PHP 6 - très orienté objet - ça devrait donner un nouveau souffle au PHP.
Bien bien...
Je testerai la prochaine fois que je programmerai en PHP (hihihi).
Vu qu'on parle d'ORM j'en profite pour parler de mon préféré, désolé :).
Pour moi, l'ORM presque parfait existe déjà et il s'appelle ActiveRecord (Ruby).
Quel bonheur de l'utiliser...
Pour ceux qui connaissent pas :
employes = Employe.find(:all)
--> select * from employes;
employe = Employe.find_by_nom_and_prenom("Blanco", "Nicolas")
--> select * from employes where nom = 'Blanco' and prenom = 'Nicolas';
nb_employe = Employe.count
--> select count(*) from employes;
employe.departement.nom ==> "Informatique"
--> select * from departements where departement_id = 1
employes = Employes.find(:all, :conditions => { :grade => 9..12, :sortie => nil })
--> select * from employes where grade between 9 and 12 and sortie is null;
Ce qui tue c'est dès qu'on veut utiliser les paramètres renvoyés par le user via un formulaire par exemple (sans compter que les paramètres sont automatiquement nettoyés pour éviter les injections).
employe = Employe.create(params[:employe])
--> prends tous les paramètres retournés dans le formulaire, mappe un objet et fais l'INSERT dans la table. C'est la même ligne, qu'il y ai 2 champs dans le formulaire ou 50 ! Il suffit juste de nommer les champs du formulaire avec le nom des colonnes dans la table et le tour est joué.
Sans compter tout ce qu'il y a autour (gestion transactionnelle : rollback automatique de la table en cas d'exception lors de la manipulation d'un modèle, etc), callbacks, etc.
Je n'ai pas encore trouvé d'ORM aussi complet, rapide et efficace en PHP...
-
[^]Re: Bien bien...
Posté par Code34 (page perso, ) le 04/06/2007 à 07:21. (lien). Évalué à 2.Je pense qu'il y a une incompréhension par rapport à ce que fait Phpmyobject.
Phpmyobject n'est pas un générateur de requêtes sql comme l'exemple que tu donnes ci-dessus.
Il n'est pas non plus un ensemble d'objets qui permettent de manipuler un sgbd comme pear.
Phpmyobject est un générateur d'objet. Il ne crée pas des objets dans les bases du sgbd, il crée des objets dynamiquement du coté du serveur d'application à partir des résultats d'une requête sql.
La différence fondamentale entre le fetch object de php tel qu'il est implémenté et phpmyobject sont:
- le fetch object de php renvoit 1 seul et unique object par tuple. Cette objet à ma connaissance n'embarque aucune méthode, et récupère en propriété tout les champs du tuple
- phpmyobject retourne autant d'objets qu'il y a de tables par tuple. Ces objets récupèrent dynamiquement les propriétés des attributs de la table, et embarque avec eux des méthodes qui permettent de récupérer et modifier ces objets, d'ailleurs ces objets peuvent être très bien étendu.-
[^]Re: Bien bien...
Posté par Laurent J (page perso, ) le 04/06/2007 à 07:58. (lien). Évalué à 2.le fetch object de php renvoit 1 seul et unique object par tuple. Cette objet à ma connaissance n'embarque aucune méthode, et récupère en propriété tout les champs du tuple
Utilise PDO disponible dans php5 : tu peux indiquer la classe à utiliser pour l'instanciation des objets (donc indiquer tes propres classes).-
[^]Re: Bien bien...
Posté par Code34 (page perso, ) le 04/06/2007 à 08:39. (lien). Évalué à 1.Ca n'a pas de rapport. Pdo permet de manipuler les résultats du sgbd, tout comme le fait pear.
Tu peux implémenter l'interface controleur, et sqlparser de phpmyobject en utilisant pear ou pdo, ça n'a pas d'importance, mais ça n'intervient pas au même niveau.
pdo et pear sont des objets qui manipulent des sgbd.
phmyobjet crée des objets dynamiquement calqué sur le modèle relationnel de ta base.-
[^]Re: Bien bien...
Posté par Laurent J (page perso, ) le 04/06/2007 à 09:41. (lien). Évalué à 1.si ça un rapport : je t'indique juste que le premier avantage que tu indiques dans ton commentaire précédent n'est pas valable puisque PDO le fait déjà.
Je n'ai pas dit par contre que PDO faisait ce que tu décris dans le deuxième avantage.-
[^]Re: Bien bien...
Posté par Code34 (page perso, ) le 04/06/2007 à 10:30. (lien). Évalué à 1.Je ne citais pas ça en tant qu'avantage, je décrivais vulgairement l'implémentation du fetch object de php5. S'il y a un module comme pdo qui permet de manipuler les résultats des requêtes sql plus précisement en oo c'est très bien.
-
-
[^]Re: Bien bien...
Posté par Dinofly (page perso, ) le 04/06/2007 à 09:47. (lien). Évalué à 1.Mais est-ce que ça ne serait tout de même pas comparable à PDO ?
PDO::FETCH_CLASS: retourne une nouvelle instance de la classe demandée, liant les colonnes du jeu de résultats aux noms des propriétés de la classe. Si fetch_style inclut PDO::FETCH_CLASS (c'est-à-dire PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE), alors le nom de la classe est déterminé à partir d'une valeur de la première colonne.
http://fr2.php.net/manual/fr/function.PDOStatement-fetch.php--
Je connais bien l'algèbre de Boole, et j'ai même vu tous ses flims.-
[^]Re: Bien bien...
Posté par Code34 (page perso, ) le 04/06/2007 à 10:37. (lien). Évalué à 1.peut être mas pas sur ...
-
-
-
-
[^]Re: Bien bien...
Posté par Slainer (Jabber id, page perso, ) le 04/06/2007 à 21:23. (lien). Évalué à 1.ok, j'ai bien compris.
mais bon, pourquoi ne pas utiliser un ORM directement qui fera tout en même temps : générer les requêtes, mapper les résultats dans un objet et proposer des méthodes pour facilement itérer dessus afin de créer des tableaux et j'en passe ?-
[^]Re: Bien bien...
-
[^]Re: Bien bien...
Posté par Code34 (page perso, ) le 05/06/2007 à 11:36. (lien). Évalué à 1.J'insiste vraiment sur ce fait: phpmyobject ne mappe par les résultats dans un objet
phpmyobject mappe 1 ligne de résultat dans autant d'objets qu'il y a des tables concernées
Je pense (et je peux me tromper car je n'en ai pas personnellement l'utilité) que c'est une mauvaise idée de développer un outil qui proposerait une abstraction à SQL si celle-ci n'apporte pas des fonctionnalités plus puissantes.
Bien entendu libre à chacun de proposer des évolutions.
-
[^]Re: Bien bien...
Posté par Laurent J (page perso, ) le 07/06/2007 à 12:15. (lien). Évalué à 2.ce que tu décris ressemble fortement à jDao dans le framework Jelix.
Tu as juste un fichier dans lequel tu déclares sur quelle tables et quelles propriétés l'objet dao sera mappé. Tu peux aussi decrire des methodes : nom, type (select, update...), les propriétés à prendre en compte, les conditions etc..
Et jDao te compile tout ça sous une forme de classe PHP, avec toutes les méthodes qu'il faut et que tu as décris, contenant alors les requêtes SQL correspondantes. Cette classe est mise en cache (donc pas de recompilation à chaque appel). le fait que les requêtes soient déjà générée et le code mis en cache apporte des performances respectables pour un orm.-
[^]Re: Bien bien...
Posté par Code34 (page perso, ) le 07/06/2007 à 17:52. (lien). Évalué à 1.Le mieux c'est que tu l'essaies, tu comprendras ce que fait pmo par rapport aux autres projets.
-
-
-
Et pourquoi pas un phppgobject ?
Salut,
Je me demandais si tu pensais à étendre ton projet à autre chose que MySQL et plus particulièrement à PostgreSQL ?
Je n'en ai pas réellement le besoin, c'est juste histoire d'équilibrer un peu le nombre de projet tournant autour de ces deux bases...Car il faut avouer que si MySQL a eu tant de succès, c'est aussi beaucoup grâce aux projets gravitant autour de ce dernier.
Or, je pense que PosqtgreSQL doit avoir sa place au moment de la conception des applications lorsque la question de la base se pose.
Bref, je suis prêt à contribuer à ton projet dans ce sens s'il le faut.
++
ioguix
-
[^]Re: Et pourquoi pas un phppgobject ?
Posté par Code34 (page perso, ) le 04/06/2007 à 13:16. (lien). Évalué à 1.Je suis preneur, envoie moi le code(car je ne connais pas l'implémentation postgress), et je ferais évoluer la class sgbd
-
[^]Re: Et pourquoi pas un phppgobject ?
-

Les journaux sont destinés à des informations qui ne sont pas suffisamment intéressantes
pour être validées en dépêche (sinon n'hésitez pas à proposer votre information en
dépêche), qui sont sans rapport avec Linux ou le libre, ou simplement pour donner votre
avis. Si vous désirez poser une question, merci d'utiliser 

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.