Je vous demande pardon , si je suis incorrecte avec certains d'entre vous , mais sachez que pour moi c'est juste des blagues :-) , rien de très sérieux , et parfois c'est le meilleur moyen d'inciter de gens brillants a intervenir sur la liste :-) .Des qu'ils sont énervés , ils deviennent bizarrement plus intelligents :-) —Ad
Le 26 mars 2013 17:36, Alioune Dia <[email protected]> a écrit : > Salut > Le 26 mars 2013 09:37, Ousmane SAMBA <[email protected]> a écrit : >> je pense que Alioune Dia devrait eviter certain propos sur cette liste si >> c'est juste d'un ORM PHP dont on parle : > >> - va voir http://www.doctrine-project.org/ et http://propelorm.org/ >> Tu vera que tes requetes se feront de manières similaire aux examples que tu >> a donné. > > Je n'ai pas encore téléchargé le code de http://www.doctrine-project.org > mais si ca fait comme ORM django/SQLaLCHIMy alors disons > alors ORM kiff kiff (match null :-) > > > Mes remarques sur http://propelorm.org/ ! > Je n'ai pas vu le code de http://propelorm.org/ , mais ce que j'ai vu > sur le site > de l'accueil ne me rassure pas !. Si l'ORM donne des choses du genre , il > ya un problème. > > > <?php > $book = BookQuery::create()->findPK(123); // retrieve a record from a database > $book->setName('Don\'t be Hax0red!'); // modify. Don't worry about escaping > $book->save(); // persist the modification to the database > > $books = BookQuery::create() // retrieve all books... > ->filterByPublishYear(2009) // ... published in 2009 > ->orderByTitle() // ... ordered by title > ->joinWith('Book.Author') // ... with their author > ->find(); > ?> > > 1— > Il y'a une redéfinition du Manager , retourné par la methode — > create()— , et il fait > un surcharge de cette classe pour chaque type d'object. il a > redéfinit Manager > en BookQuery::create() ==BookQueryManager , et il a redéfinît une méthode > comme — orderByTitle() — , alors que cette méthode est spécifique a un > — Book .Il va fausser ainsi l’abstraction , qui veut que Le Manager soit > unique > pour n'importe quelle model. Je n'ai pas regarde le code , mais c'est comme si > il avait fait : > > class Manager: > def __init__(self, model): > self.mode = self.model > > def filter(self, name_to_filtre): > # Database Backend file > backend = MySql or PostGres or SqLite bAckend > return backend.filter( self.model, name) > > Ensuite il a fait une truc qui ne sert a rien a savoir redéfinir le > Manager pour avoir > un BookQueryManager . > > class BookQueryManager(Manager): > def __init__(self, model): > self.mode = self.model > > def orderByTitle(self, name_to_filtre): > # Database Backend file > backend = MySql or PostGres or SqLite bAckend > return backend.orderByTitle( self.model) > > Il faut certes des datas manager spécifiques , mais un Datas Manager > ne doit jamais contenir une méthode comme — orderByTitle.car cela va fausser > l'abstraction. ceci vaut également pour la method — filterByPublishYear . > Je préfère l'API de Bassirou Thiam a ORM http://propelorm.org/ > Si c'est bien ce que je vois ? > > 2 — > Quand je lis > $books = BookQuery::create() // retrieve all books... > ->filterByPublishYear(2009) // ... published in 2009 > ->orderByTitle() // ... ordered by title > ->joinWith('Book.Author') // ... with their author > ->find(); > je suis un peux gêne par la syntaxe , L'ORM est sensé simplifié la vie > du développeur > mais pas complique, moi j'aurai préféré que : > Lors de la création du Manager — BookQuery::create() , qu'on spécifie > un flag —depth— > pour dire au manager s'il il doit faire la jointure — book.Athor — , > ainsi joinWith sera > transparent et ne serait plus hard-coder comme ca . > > Si je prends en compte mes deux remarques , j'aurai alors a la place de > > $books = BookQuery::create() // retrieve all books... > ->filterByPublishYear(2009) // ... published in 2009 > ->orderByTitle() // ... ordered by title > ->joinWith('Book.Author') // ... with their author > ->find(); > > $books = BookQuery::create(depth=True) > ->filterBy(year =2009) > ->find() > > et pour chaque $book de $books , l'ORM va me linker 'Autor' si je precise > — depth =True > > for each $book in $books : > $book.author > >> Donc si on devait parler de neurones je dirait que c'est toi qui n'en a pas >> beaucoup parce qu'il est impossible pour toi d'exposer exactement ce que tu >> veux. >> Sans rancune ! > > aH bon , un ORM c'est pas un API , > Espece d' ecervelet , tu est encore plus null que Bassirou Thiam , lui au > moins > le code qu'il a fourni n'est pas très jolie , mais le niveau > d'abstraction ete elevé. > >> Bonne journée a tous ! > Va te faire foutre :-) > —Ad -- Ce message a été envoyé à la liste [email protected] Gestion de votre abonnement : http://dakarlug.org/liste Archives : http://news.gmane.org/gmane.org.user-groups.linux.dakarlug Le site du DakarLUG : http://dakarlug.org
