[Debutant] - PDO ou POO ? Besoin d'un eclaircissement
Bonjour à tous et meilleurs voeux pour cette nouvelle année !
Voilà j'aurais un question qui me taraude un peu. J'ai lu que dans PHP6, seul PDO serait accepté. Hors moi, étant novice et autodidacte, je me pose des questions : PDO et POO = rien à voir ? Ca veux dire quoi ? Que je dois totalement revoir ma façon de développer et que le procédural ne sera plus accepté ?
Ma question doit paraitre bête mais je me mets au développement objet depuis peu et je vois que maintenant on parle de PDO. Surtout que je pense à une reconversion professionnel et que je suis obligé de solidifier mes bases pour être tout de même crédible !!
Sinon, message pour Hugo Hamon : Merci pour votre réponse. Je vais acheter très rapidement l'édition 5 de PHP 5 Avancé (Arf !!! Il va me rester la première édition sur les bras :-))
Bonne journée à tous !
Stéphane
Réponses apportées à cette discussion
Bonsoir Tef,
Merci d'avoir pris le temps de poster ton message sur les forums. Je vais y répondre attentivement.
Tout d'abord, ce qu'il faut savoir au sujet de PHP 6 c'est qu'il n'est pas du tout prêt de voir le jour. On pourra peut-être s'attendre à le voir paraître en 2011 mais c'est loin d'être sûr... Donc on peut déjà se contenter de PHP 5.2.8 et très prochainement de PHP 5.3 qui fera son entrée dans le courant de cette année.
je me pose des questions : PDO et POO = rien à voir ?
Oui et non à vrai dire. POO est l'abréviation de Programmation Orientée Objet. Il s'agit d'une forme de programmation où l'on conçoit une application sous la forme d'objets capables de contenir des données mais aussi capables de pouvoir agir sur ces données au moyen de méthodes (ou fonctions).
PDO signifie PHP Data Object qui n'a rien à voir avec la POO. PDO est une couche d'accès commune aux bases de données dont l'API arbore une syntaxe orientée objet. Ainsi, grâce aux objets PDO, on peut attaquer une base de données MySQL, Oracle, SQLite, PostGreSQL... sans avoir à utiliser des fonctions spécifiques comme mysql_connect()... Tout est transparent ! Il suffit de créer un objet PDO puis de lui dire avec quel type de base de données il doit s'interfacer et que l'on soit avec MySQL ou un autre SGBDR, on exécutes des requêtes SQL de la même manière. Grâce à PDO, il est désormais plus simple de concevoir des applications fonctionnelles avec différents SGBDR.
J'ai lu que dans PHP6, seul PDO serait accepté
Je serais curieux de voir ça, ça m'étonnerait sachant que MySQL a développé le driver MySQL Native Driver pour PHP 5.3 et PHP 6. Ce driver améliore les performances de MySQL avec PHP tout en assurant au développeur la compatibilité avec ses scripts fonctionnant encore avec mysql_() ou mysqli_().
Mais bien sûr, il vaudra mieux se tourner vers PDO afin d'avoir une API complètement orientée objet et qui soit capable de s'interfacer avec de nombreux systèmes de bases de données du marché.
Que je dois totalement revoir ma façon de développer et que le procédural ne sera plus accepté ?
Le code procédural existera toujours dans PHP pour la simple et bonne raison que PHP n'est par nature pas un véritable langage objet comme le sont SmallTalk, C++, Java ou ActionScript 3 par exemple. Donc, tu auras toujours la liberté d'adopter un style procédural, objet ou bien un combiné des deux comme ça l'est aujourd'hui en PHP 5.
A bientôt,
Hugo.
Merci Hugo.
J'aimerais souligné que tu (on se tutoie donc ce sera plus simple effectivement ;-)) es assez pédagogue dans tes explications. C'est la première fois ou j'ai des explications et que je comprends ce que l'on m'explique (ou alors je prends de l'age et les mots arrivent dans l'ordre plus facile avec l'expérience lol)
Petite réctification pour PHP6 et PDO (avec toute mes excusesj'ai pris d'autres sources pour vérifier) : "Dans cette nouvelle version de PHP, les fonctions telles que mysql_connect seront toutes déportées dans PECL (un dépôt dextensions PHP non obligatoires) pour laisser la place à PDO".
Source : PHP Vision (je ne mettrais pas le lien car je ne sais pas si j'ai le droit).
Mais cela veut dire, à contrario de ce que j'ai dit, que d'autres façons autre que PDO, pourront être utilisé, sauf que cela ne semblerait pas natif à l'installation (ou alors j'ai encore mal compris :-))
Pour ce qui est du Procédural, ca me rassure car je me disais que le développement de petites applis ne nécessite pas à mon sens un développement objet mais que le procédural suffit. Après sur de plus grosse structure ou de plus gros besoin, l'objet est nécessaire maintenant je pense (avis d'un novice hein...)
Les PDO :
Donc si j'ai bien compris ton explication, moi je travaille depuis peu de temps en objet pour ce qui est du MySQLi. Je créé en règle générale une class Sql qui hérite de MySQLi et ensuite des fonctions comme query, etc...
A ce niveau, il va falloir que je revois donc cela en PDO?
De toute façon je vais commander mon bouquin PHP5 Avancé 5 Ed. ^_^ Tout sera plus clair dans ma tête !
P.S : Dans tes tutos, tu comptais en faire sur PDO ?
Merci
Stéphane
Merci pour tes compliments :)
Petite réctification pour PHP6 et PDO (avec toute mes excusesj'ai pris d'autres sources pour vérifier) : "Dans cette nouvelle version de PHP, les fonctions telles que mysql_connect seront toutes déportées dans PECL (un dépôt dextensions PHP non obligatoires) pour laisser la place à PDO".
Dans ce cas, au temps pour moi. Donc effectivement, il faudra privilégier PDO pour accéder à la base de données ou bien réinstaller les anciennes lib depuis le dépôt PECL. Cela dit, avec PECL, l'installation d'un module se fait automatiquement en une ligne de commande Unix.
**Pour ce qui est du Procédural, ca me rassure car je me disais que le développement de petites applis ne nécessite pas à mon sens un développement objet mais que le procédural suffit. Après sur de plus grosse structure ou de plus gros besoin, l'objet est nécessaire maintenant je pense (avis d'un novice hein...) **
Assurément !
A ce niveau, il va falloir que je revois donc cela en PDO ?
Plutôt que de faire une classe qui surcharge MySQLi et qui essaie de mimer ce que fait PDO, il vaut mieux directement se mettre tout de suite à PDO :)
De toute façon je vais commander mon bouquin PHP5 Avancé 5 Ed. ^_^ Tout sera plus clair dans ma tête !
La POO et PDO y sont expliqués dedans en plus !
P.S : Dans tes tutos, tu comptais en faire sur PDO ?
Oui mais ça ne sera pas avant des mois car j'ai déjà comme projet de refondre toute l'architecture du site actuel, ce qui va me coûter un peu de temps ces prochaines semaines. Je t'invite à lire la doc de PDO sur le site officiel de PHP et également de chercher quelques exemples à droites et à gauche sur PHPTeam, PHPFrance, PHPCS.com et surtout sur Developpez.com
++
Hugo.
Bonjour et désolé de répondre si tardivement.
Je voulais passer ce post en résolu mais tu as été plus rapide que moi.
Merci pour toutes ses informations préciseuses ! P.S : Impeccable l'édition 5 ;)