Bonjour,
Je raconte cette fois un peu mes impressions et me demande à nouveau (sans troll aucun) . Cakephp ou framework Maison.

Voila j'ai lu hier un article d'une personne que je connaissait un peu de loin sur ce sujet. Et le point de réflexion est important pour moi.

http://blog.phppro.fr/?post/2010/02/27/Les-frameworks-c-est-bien-developper-en-dehors-c-est-mieux

Dernièrement j'ai été attaqué sur mon site wordpress ( mais ca aurait pu m'arriver aussi sur cakephp je le pense).
Le probleme est avec ce genre de Framework ou CMS, on a du mal à comprendre le code source et l'injection de code malicieux dans le framework est pratiquement indécelable.

Je sais que par exemple si un pirate rajouter du code dans le core de cakephp. Je n'y verrais que du feu.

Tandis que sur un code que je maitrise de A a Z. Je sais tout de suite ce qui est pas de moi.

Voila et d'autres arguments dans l’article me font penser que le gars qui utilise un framework, il ne sait plus trop codé. Il utilise des choses toute faites. J'etais en entretien d'embauche hier et j'ai posé la question au recruteur, il m'a dit qu'il preferé quelqu'un qui maitrise son code et qu'il pouvait optimisé une requete sql, plutot que de reporter la faute sur un framework quand la requete est trop lente(bon la c'est son avis).

Voila votre avis m’intéresse aussi.

23 réponses


sylvain
Auteur

En gros c'est le fast food du développement. On bouffe du code, mais on sait pas trop ce qu'il y a dedans. On en deviens dépendant.

Pour les bons, ca les aides, pour les gens comme moi "fénéant" ca s’arrête la. Je ne vais pas allez plus loin.

J'aurais aimé comprendre ce que c'est un singleton, un pattern facade. Mais il n'en es rien. Tout cette couche est abstraite.

C'est que tu ne connais pas assez PHP pour utiliser un Framework. Il faut voir la base avant de voir les outils utilisant cette base.

tu ne connais pas assez PHP et la programmation orientée objet : le pattern singleton est facade, que je ne connais pas, sont développés en objet.
Et comme pour les amis que j'ai pré-formé au php en utilisant directement le framework cakphp (gros projet en 6 mois oblige), je leur ai tous dit qu'il fallait absolument voir les bases de PHP pour comprendre ce qu'ils font et d'où ca vient, histoire de dégrossir et de pouvoir être plus performant avec le framework, y'en a un seul qui l'a fait et bien évidement, il a compris d'autres choses qui l'ont aidé sur d'autres langages de programmation et qui est devenu le plus fort du groupe (apres moi parce que j'ai toujours plus d'expérience que lui et une bonne mémoire en ce qui concerne les fonctions et leur utilité :))

je te conseilles donc de revoir les bases de PHP ainsi que les bases de la POO avec php (qui a quelques points difficile, mais tu n'es pas obligé de tout voir)

si tu t'intéresses aux design pattern, y'a un site que je n'arrive pas a retrouver qui explique le fonctionnement de pliens de design pattern, le singleton est simple à mettre en oeuvre, mais je ne vois pas trop comment l'utiliser…

sylvain
Auteur

Comment savoir quand je saurais les bases de PHP ?

^^ parce que tu auras réussi à faire un petit site sans framework :)
tu n'est pas obligé de le faire avec des objets et tout ca hein, j'ai commencé par interface de connexion avec modification de profil (et j'ai pas fait que demander pseudo et mot de passe) en prenant en compte confirmation de mot de passe, des expressions régulières pour le mail et le téléphone portable etc…
apres, gestion de droits par exemple avec ajout, edition de news, possibilité de banir un membre et tout ca quoi :)

bon, là en fait, je te donnes les fonctionalités de la V1 de mon site pour mon club d'escalade qui est mort depuis (le site, pas le club !), c'etait moche et mal codé : en procédural, quand j'avais besoin d'infos, je faisait une requete sql puis une boucle pour traiter le resultat… et c'etait avec mysql_* pas avec PDO !!! avec des redirections impossible (avec header) parce que y'avait tout le reste de la page au dessus… bref la merde, mais ca fait pratiquer et apprendre pleins de choses ! ;)

Si tu ne comprends pas les notions utilisées dans un framework et que tu n'es donc pas capable de décrypter son code, même sans forcément connaître à 100% toutes ses ficelles, c'est que tu n'es pas prêt à en utiliser un. Tu peux tout à fait te former en même temps que son utilisation, mais la formation ne doit pas se limiter à répéter les tutorials qu'on trouve sur le net, il faut être curieux des moyens utilisés dans le framework, chercher comment c'est fait, et essayer peut être dans un premier temps à comprendre la source.

Aujourd'hui tu ne peux plus coder en PHP en utilisant le procédural (enfin tu ne devrais plus), tu te dois d'être opérationnel sur l'objet en PHP. C'est plus long à comprendre, plus long à apprendre, mais beaucoup plus facile de faire un site maintenable, et modulable, et donc beaucoup plus gratifiant. Sans parler du fait que pour corriger des failles, des bugs, c'est plus pratique et plus clair et donc facile.

sylvain
Auteur

Je comprends seulement je ne sais pas ou donner de la tete, j'ai envie de tout apprendre... le wordpress parce qu'on peut mettre rapidement en place un site. cake php parce qu'il est plus souple . Ce que je me dit c'est que j'apprendrais tout en meme temps. mais la je me rends compte que ça fait trop. d'autant plus que j'ai un boulot

sylvain
Auteur

Ca me soual tout ca, j'ai envi de faire tellement de chose, mais a chaque fois quand je commence un tuto. le resultat est ultra inexeploitable. les hello world j'ai donné.

sylvain
Auteur

Et un autre truc, quand je but sur un problème ça me stress. Pourtant j'ai les fondamentaux en développement des algorithme en Java.
Je passe parfois des journées entieres juste sur un probleme pour au final avoir un resultat de misere. bref 3615 ma vie

Le plus important en développement c'est de ne pas chercher à aller trop vite. On pourrait être tenté de se diriger tout de suite vers les solutions modulables, approuvée, type framework, quitte à n'en pas comprendre toute la substance et à se démerder avec ce qu'on arrive à faire. Après tout même si le code est dégueulasse ça fonctionne !

Le problème c'est qu'en faisant ça on devient dépendant de l'outil qu'on utilise puisque les connaissances fondamentales liée au développement PHP dans notre cas ne seront pas totalement acquises.

Pour moi le plus important pour se familiariser correctement avec le PHP c'est dans un premier temps de s'initier aux bases, via un tuto comme celui sur le site du zéro ou bien les vidéos de ce site. Comprendre la notion d'exécution côté serveur et l'utilisation conjointe d'une base de données.

Une fois que les bases et les principaux fonctionnements sont bien compris, on se rend alors compte qu'on ne sait souvent pas très comment s'organiser pour un projet, on se rend compte qu'on sait globalement de quoi on aura besoin mais vraiment du bon nombre de fichiers, ni de leur bon emplacement, etc. De plus, on va être amené à sûrement dupliquer notre code plusieurs fois dans notre application. Quand on commence c'est pas très grave, ça forme. C'est donc à ce moment là qu'il faut se tourner vers les modèles de conception, et notamment le modèle MVC, très bien adapté au développement web. Pour ça je te conseil dans un premier temps d'essayer de comprendre ce que c'est de manière complètement théorique, pour en comprendre le fonctionnement global, sans entrer dans le code en lui même. Si tu as déjà un bon niveau en PHP tu peux par exemple t'inspirer d'une architecture MVC non orientée objet que j'ai réalisée (mais qui n'est pas du tout à jour) : IMAC_MVC

Une fois que tu as compris les principes du modèle MVC tu ne pourra plus t'en passer, et pour appliquer toute sa modularité à ton code tu vas devoir passer par l'apprentissage de la programmation orientée objet en php. Au moins les bases. Une fois que tu as ça je te conseil de suivre le très bon tutoriel de Grafikart sur le modèle MVC objet.

Quand tu aura compris les fondements du modèle MVC objet et que tu sera capable de créer ta propre architecture, même avec de l'aide à côté, alors là tu pourra réellement te lancer dans l'utilisation d'un framework type CakePHP. L'architecture te sera familière et de plus tu aura le niveau requis pour comprendre globalement les fichiers du core si besoin est.

Pour résumé on devient pas un développeur autonome, rigoureux et qui fait preuve de discernement en s'attaquant directement aux framework, car comme leur nom l'indique ils sont composés d'outils, et pour les manier correctement il faut déjà s'avoir se servir de ceux de base. Concernant les frameworks maison il n'est pas rare (voire même très courant) qu'une agence web en vienne à un moment ou à un autre à créer son propre framework, car elle a besoin très spécifique que la modularité d'un framework classique n'apportera pas directement.

Toujours est-il que même si tu dois réaliser ton propre framework (et plus généralement pour n'importe quel projet de développement) tu dois toujours essayer de récupérer des briques qui ont été faite par ci par là pour ne jamais réinventer la roue. Au début on est très tenté de se dire qu'on va tout refaire à partir de zéro sinon c'est de la "triche", mais crois moi, pour l'avoir tenté on perd au final BEAUCOUP plus de temps pour un projet qui au final n'est pas forcément viable. Fabien Potencier le création de Symfony à d'ailleurs dans cet optique écrit une série d'article sur la ré utilisabilité de ses composants pour créer son propre framework à partir de briques déjà solide. Tu trouvera une traduction ici mais il faut être déjà sensible à l'architecture de Symfony, et à tout ce que j'ai mentionné ci dessus ;)

Après je ne connais pas ton niveau et mon message est assez général et s'adresse à tout le monde bien sûr ^^

Bonne chance !

sylvain
Auteur

Merci d'avoir tous pris du temps pour répondre. j'ai bien aimé Deltod ton travail sur le framework IMAC, en le lisant je comprends comment le faire fonctionner, je comprends qu'il est bien structuré. Mais je n'aurais jamais eut la capacité de le concevoir depuis 0.

Je pense que je n'ai pas assez confiance en moi, au début, j'ai cherché sur internet des codes MVC tout pret pour les decortiquer et les comprendre. Mais au final, je pense qu'il aurait fallu que j'en fasse vraiment un depuis 0 pour que je comprenne vraiment le mécanisme.

Ma reflexion : " En fait comprendre ce que l'on fait est plus important que d'appliquer des choses toutes faites sans les comprendre."

sylvain
Auteur

Un autre probleme et bien plus grave, c'est que je ne sais pas ou chercher les informations. Sur internet il a tellement de sources.

Bon la par exemple j'ai mis en place IMAC et j'ai un soucis sur le htaccess qui indique une erreur 500. J'ouvre le fichier et je ne vois rien d'anormal. Probablement le chemin qui ne correspond pas.

EDIT : j'ai vu que j'avais pas le module rewriting dans les logs apaches.

sylvain
Auteur

J'ai fait beaucoup 5 ans d'admin sys sous linux et je suis tombé dans le développement un peu par hasard, cela m'avais interessé et j'ai du prendre un cursus au CNAM pour les bases de l'algo en Java, j'ai meme étudié le MVC sans le comprendre au final.
Je pense que je n'ai pas eut de chance, car les profs que j'ai eut n'ont pas cette passion qu'on certains de transmettre le savoir.

Ceci etant dit, j'ai depuis 1 mois intégré un projet de développement et la personne qui bosse avec moi a tout fait depuis le début.

sylvain
Auteur

(le coin du psy) Je pense que je ne suis jamais satisfait de mon code. et c'est ca qui me freine. quand je le compare a d'autre je trouve qu'ils ont plus de talents.

sylvain
Auteur

@Deltod : comment tu fais pour envoyer dans ta vue les données qui viennent du model. tu peux ajouter un exemple ?

En fait y'a une doc je crois sur le lien github, mais les fichiers ne sont plus du tout à jour, depuis j'ai modifié plein plein de choses, je vais mettre à jour sur github ;)

EDIT : Voilà j'ai mis les fichiers à jour tel que je les ai utilisés pour un projet, la doc n'est pas forcément à jour par contre =/ Mais tu sais je te montrais cet exemple juste que pour tu vois une façon de faire une architecture MVC orientée framework mais pas objet, le tout reste assez expérimental et un peu "bidouille" parfois pour imiter des notions objets. De plus certaines chose ayant trait aux fichiers CSS, JS tout ça sont pas forcément pratique à gérer. C'était pour un projet d'école et la prog orientée objet était interdite donc bon voilà quoi ^^

sylvain
Auteur

Cool, bon je pense qu'il faut que je m'y mette, mais ca m'embete de faire ca en lisant un livre. Je pense qu'il me faudrait avancer avec une personne de meme niveaux...

sylvain
Auteur

Je me demandais, dans le processus d'apprentissage est il necessaire de tout apprendre ? J'imagine que c'est comme le dictionnaire il est inutile d'apprendre tout de a a z.

Il n'est pas nécessaire d'apprendre par coeur mais il est nécessaire de comprendre :)

sylvain
Auteur

Mais je comprends les choses, et je sais en fait pleins de truc et quand je ne sais pas je vais dans php.net et cherche la function.
Pour faire les exemples ca c'est facile.
Mais pour prendre un exemple avec le tutorial de login personnalisé sur wordpress, j'aurais jamais eut l'idée de faire une page a part (ce qui est beaucoup plus classe) mais plutot juste modifier le wp-login.

Bon je reformule.
Il n'est pas nécessaire d'apprendre par coeur mais il est nécessaire de comprendre et de pratiquer.

sylvain
Auteur

J'ai encore remarqué un autre truc, développer sur un framework n'est pas développé en php pur.
Il y a que parfois des gens peuvent faire pleins de truc sur le framework sans trop de prendre la tete.

Si je m'investi a fond sur php il sera toujours utilisable
si je m'investi sur cakephp ou zend ou autre, ca sera particulier a tel type de framework. et il y a tellement de chose pour faciliter (les helpers par exemple) qu'on se dit, waouh c'est magique sans allé plus loin.

Bah je t'ai dit ce qui à mon avis est la bonne route à suivre pour l'apprentissage du PHP, faut juste le faire ça prend un peu de temps c'est sûr