|
Publicité ' | ||||||||||||||||||||||||
|
|
#161 | |
|
Futur Membre du Club
![]() Inscription : décembre 2005 Messages : 30 ![]() |
Citation:
Mais je ne suis pas sûr que ça soit une bonne pratique. Parce que ta classe ne peut pas être exportée dans un autre projet, à moins de s'assurer que l'objet de connexion à la base de données soit présent partout... ? |
|
|
|
00
|
|
|
#162 | |||
|
Expert Confirmé
![]() ![]() Urbaniste Inscription : juillet 2004 Messages : 1 426 ![]() |
Citation:
ça ne veux rien dire include moi j'utilise ça Code :
/application contient tout le code de l'application avec les sous dossiers pour retrouver ses petits (et ne pas avoir un include qui contient tout) /public est un dossier qui contient des élément accessible du navigateur (sans passer par php) comme les css les js des fichier html etc. A+JYT |
|||
|
|
00
|
|
|
#163 | |||
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
Citation:
En gros, Code :
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|||
|
|
00
|
|
|
#164 |
|
Membre chevronné
![]() |
C'est une opinion que ne tient qu'à toi. include/ est utilisé depuis la nuit des temps de la programmation (je zappe l'asm et le basic), c'est à dire depuis C/C++ ! Et puis il y a toujours plusieurs façons de bien organiser une arborescence.
__________________
Expertise OpenERP - programmation PHP/MySQL toujours à l'écoute du marché |
|
|
00
|
|
|
#165 | |
|
Futur Membre du Club
![]() Inscription : décembre 2005 Messages : 30 ![]() |
Citation:
oui. l'histoire des répertoires, c'est juste pour illustrer ce qui se passe dans ma tête, et pour être sur de bien séparer tout ça. est ce que tu pourrais montrer ce que ca donne en gros des "controleurs programmés sous forme de classe" ?
|
|
|
|
00
|
|
|
#166 | |||
|
Futur Membre du Club
![]() Inscription : décembre 2005 Messages : 30 ![]() |
Citation:
et comment tu te sers de la classe ? où/quand tu l'appelles (par exemple dans les quelques fichiers que j'ai cités auparavant )?
|
|||
|
|
00
|
|
|
#167 | |||||
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
Citation:
En gros Code :
Code :
En faite, cette technique me permet d'utiliser différente SGBD sans que cela affecte les classes. Cela marche que si tout est bien organisé
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|||||
|
|
00
|
|
|
#168 | |||
|
Membre chevronné
![]() |
Citation:
Code :
__________________
Expertise OpenERP - programmation PHP/MySQL toujours à l'écoute du marché |
|||
|
|
00
|
|
|
#169 | |||||
|
Futur Membre du Club
![]() Inscription : décembre 2005 Messages : 30 ![]() |
Citation:
Code :
je trouve que c'est un peu pareil que d'avoir un global $db... non ? |
|||||
|
|
00
|
|
|
#170 | |||||
|
Futur Membre du Club
![]() Inscription : décembre 2005 Messages : 30 ![]() |
Citation:
c'est l'équivalent de mon index.php ? Code :
|
|||||
|
|
00
|
|
|
#171 | |||
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
Citation:
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|||
|
|
00
|
|
|
#172 |
|
Membre régulier
![]() |
Le problème des globals c'est qu'on casse un peu les objectifs de l'objet et de l'encapsulation, enfin ceci reste que mon point de vue.
__________________
Java'ldire à tout le monde |
|
|
00
|
|
|
#173 | |
|
Futur Membre du Club
![]() Inscription : décembre 2005 Messages : 30 ![]() |
Citation:
si on reprend mon exemple d'affichage d'une liste d'utilisateurs où / comment est ce que tu gères l'interaction de formulaires (ex : ajout d'utilisateurs) ? |
|
|
|
00
|
|
|
#174 | |
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
Citation:
1er rempart : Les données du formulaire passe dans une classe contrôleur qui lui gère les données 2eme rempart : s'occupe de placer les informations dans la ou les classes adéquates. 3eme rempart : Le contrôleur va ensuite appeler la classe qui s'occupe de faire le lien entre la base de données et cette objet. Dans ton exemple cette classe sera "DataUtilsateur". Seul cette classe à le droit de communiquer directement avec la base de donnée et dans ça limite autorisé. Elle possède toute les requête SQL concernant la gestion de l'utilisateur. Elle possède tout les contrôles nécessaire avant de mettre n'importe quoi dans la base de données. C'est le 3eme rempart de sécurité de la bonne conformité de données. Le 4eme rempart se trouve dans la base de données parce que dans mon cas, il y a aucune requête SQL de type SELECT, INSERT, DELETE ou UPDATE dans le PHP. Seul l'appelle d'une procédure stocké est accepté. La raison est que je déplace une bonne partie de la logique métier à la base de données. L'avantage c'est qu'il y a quasiment pas de code PHP pour gérer les données quand elles ont une interaction entre elle. En résumé. Cette technique présente l'avantage que je sais que ma donnée va toujours passer par un endroit précis, par le même chemin. L'inconvénient c'est que c'est un peut plus long à coder mais quand la structure est en place c'est aussi fluide que de l'ether
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|
|
|
00
|
|
|
#175 | ||||
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
Je rajouterais ma pierre concernant une bonne habitude à prendre en développement.
Écrire du code c'est comme écrire un livre. Si vous demandez à plusieurs personnes d'écrire un livre sur le système solaire, vous aurez autant de façon d'expliquer le système solaire. Pourtant, le système Solaire est telle qu'il est 9 planètes etc. Pour le développement c'est un prêt la même chose. On vous donne un cahier des charges et vous devez finaliser le projet à la manière du développeur. Je dis "à la manière du développeur". En effet, même si, il y a des protocoles bien strict vous ne pouvez pas transformer ou vous transformer en robot et faire du code des manières strict et en 100% en accord avec le protocole. Ceci est encore plus vraie quand vous êtes seul. Plus facile quand vous êtes plusieurs voir préférable. Ce que je veux dire, c'est qu'au début d'un projet; pour un client, ou pour vous. Il est préférable de penser à un protocole d'écriture et d'organisation du projet. Pour être précis, c'est qu'il faut garder la même manière de coder du début à la fin. Pourquoi ? Si vous passez la main à quelqu'un d'autre, celui-ci peut être dérouté par votre manière. Mais avec le temps, il va finir par comprendre comment vous fonctionné. Le plus important pour lui c'est qu'il ne faut pas changer en court de route. Bien évidemment, ceci marche seulement pour les personnes ayant un minimum d'expérience dans le langage. Il ne faut pas que être brouillon. Par contre, dans une équipe il est important d'avoir un protocole commun mais ne pas chercher à figer le protocole car il est important de respecter une manière, un style à chacun. C'est petite marge permet d'augmenter la créativité de chacun. C'est dans de ces moment là qu'il y a des idées qui naissent. Parfois des bugs aussi Il y a des cas extrême à laquelle il faut éviter de rentrer et réfléchir là ou il faut. Je vais prendre l'exemple du typage en PHP. Certaine personne code ainsi. Code :
Code :
Dans notre cas, Le plus important c'est qu'elle est le rôle de cette variable. Un nom explicite est largement suffisant que de rajouter le type. De plus, si le code est assez bien organisé, c'est à dire avec une phase d'initialisation des variables, vous en aurez encore moins besoin car vous verrez de suite son rôle. Cette histoire de variables n'est qu'un exemple mais l'idée principale d'éviter de perdre son temps sur ce genre de point de détails et s'axer sur la logique de l'ensemble du code, parce que si le code n'est pas logique ;indication du type ne sert à rien. A titre personnel, j'applique le type de variable seulement pour des cas précis. $objMonObjet, $collMaCollectionObjets,$arrMonTableau. J'en parle par expérience parce que je suis tombé sur des personnes ainsi. Ils perdaient plus leur temps à définir un protocole dans ce genre là. Que : - Les accolades se mettent à la ligne; - Les variables doit avoir le type dans le nom; - Les noms des objet doit commencer par Obj (Ridicule Mais au final leurs codes étaient mal organisé et codé l'arrache ce qui fait que c'était truffé d'erreurs. Par contre le protocole était .Mais bon, si vous le faite quand même (histoire des types dans la nom de la variable) c'est pas plus mal., surtout si le code est claire, organisé, logique et compréhensible. Je dis pas qu'il ne faut pas le faire -hein
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
||||
|
|
00
|
|
|
#176 | ||
|
Futur Membre du Club
![]() Inscription : décembre 2005 Messages : 30 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#177 |
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
C'est toi
En faite je parlais de :
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|
|
00
|
|
|
#178 | |
|
Nouveau Membre du Club
![]() |
Citation:
En toute logique, il faut utiliser l'abstraction, et malheureusement, ca se traduit par du code en plus. C'est nécessaire pour découpler les éléments d'une application. Pour reprendre l'exemple de la liste d'utilisateur, sur la couche modele. Voilà comment j'organiserais ca. (Au passage, je modifie mon propos de mon post precedent). J'utilise 4 classes. UserService : Classe visible par le controleur. Cette classe delivre une liste d'utilisateur (au sens metier du terme) User : Cette classe represente un utilisateur. UserProvider : Cette classe fourni des methodes pour sauvegarder en base ou charger des user. SgbdProvider : Classe d'accès à la base de données (et eventuellement, via PDO). Pourquoi avoir séparé User et UserProvider ? User est bien l'utilisateur en lui meme. Trouvez vous normal qu'on y place des appel à une base de données ? Pensez vous que l'objet user doit savoir ou se trouve les données d'un User ? Doit il savoir si l'abjet est en base, en annuaire, dans un fichier ? Non, et ce n'est pas son role. La seule chose que doit avoir l'objet user, c'est une méthode qui lui permet de loader un user, ou le sauvegarder. (load() et save(), par exemple ^^ ) load() et save() devraient invoquer une methode d'UserProvider. C'est Userprovider qui doit décider de quelle source nous avons besoin. Elle doit par exemple generer la requete SQL, et la faire executer via sgbdProvider. Chacun son role. Un provideur, il est là pour alimenter, fournir. Toute la problématique est donc de savoir ou placer son code. Telle traitement doit se faire au même endroit. Lorsque c'est respecté, je vous assure que c'est 100 fois plus rapide à maintenir. Meme si il y a un peu plus de classe, on sait directement ou intervenir. Et pour reprendre mon quote du début : en maintenance, la situation la pire est de faire du reverse sur du code. Tu perds plus de temps à essayer de comprendre la logique du développeur, que le code en lui même. Et c'est d'autant plus important de découpler les briques, que les applications sont souvent maintenues pas des personnes differentes au cours du temps... Autant garder une logique eprouvée, et un couplage lache (principe roi en SOA) pour assurer les evolutions le plus en douceur possible. Ah oui ... utiliser les globals, c'est le meilleur moyen de s'appercevoir qu'on a pas saisie l'interet du multicouches et de l'objet (je ne me moque pas, on est tous passé par là). |
|
|
|
00
|
|
|
#179 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
Avec tout ces gens qui disent tous (qui nous "assure" tous !) que leur solution est la meilleure, on s'y perds un peu.
Cela me rappelle une blague (excusez ma digression ^^) : - Combien faut il d'ingenieur C pour changer une ampoule ? - Un seul... mais il en faut 30 un mois après pour comprendre comment il a fait. Nous avons tous une manière de coder différente, d'organiser nos classes, de fournir ou non des interfaces a nos objets, etc... Comme il l'a été dit, l'important n'est pas de trouver "la meilleure solution", elle n'existe pas... sinon ca ferait longtemps que le code serait généré par un programme entierement automatique ;o) L'important c'est de : * Etablir des regles en s'inspirant d'un ou de modeles existants (MVC ou autre) * Coder en respectant ces regles Si en plus le ou les developpeur ont une pincée de bon sens (ce qui manque plus que tout en informatique...) alors ca ne pourra pas être completement mauvais.
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
|
|
#180 |
|
Nouveau Membre du Club
![]() |
Permes moi de répondre à ta réplique
Initialement, en lisant ce topic sur la meilleur façon de coder en PHP, nous en sommes venu à parler de MVC. Tu peux coder sans MVC, mais non seulement, tu risques de t'embourber, mais en plus tu ne te vendras jamais auprès d'une boite qui cherche un développeur J'ai vu que certains ici pensent que pour coder en MVC, donc en couche, il était important, voir capital, d'utiliser un framework. A ça, je réponds NON. C'est inutile lorsque on est trop léger en MVC. Ca me parait logique. Pour bien utiliser un outil, il faut savoir pourquoi il a été fait, et surtout, en quoi il va nous simplifier la vie. Si tu commences à te pencher sur le MVC, et qu'en plus de ça, tu dois apprendre les subtilités d'un framework, tu vas vite finir par laisser tomber. C'est un gros boulot ... Pour le peu que tu changes souvent de techno, tu risque d'être rebuté très (trop) vite. J'essayais juste de faire comprendre que framework et MVC, ce sont deux choses différentes, et que tu peux maitriser la programmation en couche sans utiliser un seul framework. C'est non seulement très utile, mais c'est surtout très formateur. On a souvent des cas de figure très différents. certains vont préférer coder style RAD. D'autres vont vouloir être plus posés, plus lent, plus réfléchis... C'est à chacun de voir ... Mais, pour avoir vu quelques lignes de code tourner, et les problématiques du développement pourri, j'ai choisi mon camp Que ce soit en Php, java, C#, ce genre de conseil est utile. Il y a du bon à prendre dans chaque monde. Ex : Java et son fonctionnement objet robuste Ex : La simplicité apparente de PHP Sinon, ce n'est pas demain la veille que les machines vont générer le code à notre place. reprenons mon exemple: En fonction des besoins (évolutions possibles, monté en charge, temps de réponse, etc), plusieurs façon de procéder sont possibles. C'est l'art de placer le métier ... Certains vont faire des classes en PHP, d'autres vont faire des traitement en procédures stockées ... Il n'y a pas de recette miracle, et à chaque solution ses avantages et contraintes. Il y a juste quelques notions qu'on reverra souvent, quelque soit le cas de figure. Et pour moi, un découpage logicielle logique est ultra important. Il te permet de réutiliser ton code, avec le moins d'effort possible. Donc, à moindre cout, car plus rapidement. Et le temps, c'est de l'argent (comme le disent tous les patrons Après, chacun fait comme il le veux, car chacun devra s'occuper de son propre caca |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com