Certe, mais la version que j'ai corrigée est celle-ci : http://dev-jvc.deblan.org/pflimlin/App-corrige/Web/frontend.php
Bonsoir.
J'essaie depuis un moment d'obtenir une archive de l'application complète du tutoriel entièrement fonctionnelle.
Sera-t-il possible une fois que cette dernière fonctionnerai de faire un zip de celle-ci ?
J'avais demandé la chose à l'auteur même du tutoriel, mais il refuse de répondre à mes MPs. Un ami à moi voudrait partir de ce tuto pour un projet de test...et avec mon job, je n'ai pas vraiment le temps de m'y pencher.
Merci beaucoup, ce serait vraiment sympathique :D !
http://www.fichier-zip.cocom/2013/04/11/vik12-tuto-poo/
Cependant, ce micro framework est difficilement extensible sans devoir modifier la classe Application à chaque fois, il aurait du introduire la notion de DIC en même temps.
Un avis d'ailleurs sur ce mini framework ? Je veux dire globalement c'est correct ou y a des trucs aberrants a changer ? Perso c'est ce que j'utilise depuis quelques mois pour mes développements, voulant démarrer l'objet (au début ça va quand on reste avec l'exemple de la voiture ou du perso, par contre quand on fait un site je trouve ça assez abstrait comme concept et pas facile a assimiler au départ). Certes ça doit etre minime mais je ne cherche pas le big framework justement, par contre si je veux réellement progresser autant travailler sur un outil qui est correct et non bourré de fautes (car en debutant on ne sait justement pas toujours si la logique est bonne ou pas)
Il est très minimaliste. Si t'as rien d'autres à ajouter ça passe, mais si tu veux ajouter d'autres fonctionnalités faut que t'instancies tout dans le constructeur de l'application.
C'est là qu'un DIC aurait été plus judicieux.
Ensuite il ouvre la connexion à la base de donnée dans le constructeur, se qui rend parfois pas les choses évidentes.
De plus si tu veux ajouter un autre ORM comme Doctrine ou Propel tu devras modifier le backcontroller.
Pas de possibilité d'ajouter un moteur de template sans modifier la classe Page. D'ailleurs celle-ci ne gère pas le cas des requêtes AJAX et ses fonctions sont très limitées.
La connexion et l'authentification des visiteurs manquent des sécurités.
On ne peut utiliser que le XML pour les fichiers de configuration, alors qu'il explique dans un précédent tuto le Pattern Strategy. Il aurait pu le réutiliser pour créer différents parser.
Voilà, ce mini framework est vraiment très simple, chose qu'on ne peut pas lui en vouloir parce qu'il n'est présenté qu'à titre éducatif et indicatif (savoir comment fonctionne un framework de façon général). Mais à ta place je ne l'utiliserais pas pour mes propres développements et je me dirigerais vers quelque chose de plus solide comme CakePHP, Symfony2 ou ZendFramework2 ou si t'as les connaissances suffisantes dans un framework personnel qui corrigerait les erreurs de conceptions du tuto.
Merci
!
Voilà qu'il va être ravi !
Mais effectivement, si je compare avec le site que j'ai développé avec un framework, un kernel et un système de plugins pouvant se greffer, on voit que ce tutoriel présente bien des défauts. J'ai quand même conseillé à mon collègue de partir de ça pour s'entraîner, analyser le code, son fonctionnement, les étapes entre la demande du visiteur et le retour du traitement qui affiche la vue à celui-ci. Par la suite, et quand j'aurai du temps devant moi, je lui montrerai d'autres directives. Et puis, y'a aussi les ORM effectivement comme tu en as parlé (le noSQL), mais aussi les webapplications Java (permettant de lâcher un peu le côté PHP), bref...beaucoup de choix
.
Et on ne parle pas évidemment des frameworks existants : rien que de connaître Symphony ou Zend, c'est déjà bien ! ![]()
Sorry for the double post.
Et en effet aussi, j'ai zieuté vite fait le code au niveau des vérifications, et ça manque cruellement de sécurité. Chose qui chagrine, car même dans un tutoriel/cours pour débutants, c'est bien un point qu'il ne faudrait JAMAIS outrepasser ou même néglier. C'est sécurité comme il se doit, ou pas de sécurité du tout, mais entre les deux...
Encore merci pour mon collègue ! :D
C'est re-moi.
Je viens de déployer en local l'archive, donc ça fonctionne bien en effet, mais y'avait pas un design proposé dans le tuto ?
Et comment on accède à la partie admin ?
Merci
.
EDIT : pour le design, c'est corrigé, le lien donné dans le tuto dans le fichier du layout.php vers le fichier CSS n'était même pas bon. Ce que je vois à priori, c'est que l'auteur du tuto n'a même pas testé son code avant d'en faire un tutoriel... grave.
L'archive zip ne vient pas de vik12 mais de moi, l'application traînait dans un vieux dossier de mon ordinateur et j'ai retesté avant de zipper et envoyer, le design n'avait aucun soucis.
Pour accéder à l'admin, suffit de rajouter /admin/ dans l'adresse du site.
Perso pour le template il suffit d'ajouter un attribut et une méthode dans la classe Page, ça se fait en 1 minute et ça règle le choix du template. ^^
Ensuite j'ai rajouté une méthode pour récupère la langue a la session de l'utilisateur, ce qui me permet donc de pouvoir faire des sites multilingues sans problème. C'est surtout ce qui me manquait perso.
Et ce que j'aime avec un truc minimaliste, c'est que je peux arriver à comprendre de A à Z son fonctionnement. Symfony par exemple faudra des mois voir des années si tu veux le comprendre de fond en comble, non seulement son utilisation mais aussi tout le reste, bref ça reste fort usine à gaz à mon goût. Je préfère donc déjà tenter de comprendre la logique de quelque chose de plus minimaliste avant de me lancer dans de trop gros truc.
Après perso il me manque 2-3 trucs quand même sur ce mini framework, du genre j'ai dû mal à voir où je dois créer ma méthode qui va s'occuper de réecrire le titre d'un article pour qu'il soit acceptable en URL (en gros ne plus avoir une url du genre article/1 mais article/1-titre-de-mon-article). Je sais le faire, mais j'ai dû mal à savoir QUI doit le faire (le manager, le routeur ?)
Bref il est minimaliste mais je pense qu'avec quelques ajouts en plus ça peut déjà donner une bonne base de travail. La question c'est de savoir où placer ces ajouts (par exemple au niveau sécurité, est ce qu'il ne faudrait pas une classe pour ça ? Jusqu’à présent je fout mes htmlspecialchars dans la vue, mais je trouve que ça fait pas très objet (sachant par exemple qu'il a réécrit une classe pour gérer les requêtes HTTP (GET, POST etc))
| Fire_Storm
| Posté le 11 avril 2013 à 14:57:53
| Perso pour le template il suffit d'ajouter un attribut et une méthode dans la classe Page, ça se | fait en 1 minute et ça règle le choix du template. ^^
C'est se que j'ai fais:
https://wall.deblan.org/x177a/php/1/Ahy-AbstractView-class-php
https://wall.deblan.org/xx1779/php/1/Ahy-View-class-php
La première impose la structure du framework aux moteurs de vue/template et la seconde permet de générer des vues n'utilisant que le PHP. Mais si j'ai besoin d'utiliser Twig par exemple je n'ai qu'à créer une classe "proxy" qui instanciera Twig et fera le lien entre le restant du framework et le moteur de template.
Ben voilà. ^^
Certes il est minimaliste mais je suis sûr qu'avec quelques ajouts, ce qui ne tient parfois à pas grand chose comme ici, y a moyen de se faire une petite base de travail sympa.
Pour un framework comme symfony, ça ne sert à rien de vouloir tout comprendre, sauf si tu as envie d'être certifié...et faudra en savoir plus que le framework lui même (PHP en général, très bien connaître le protocole HTTP, etc.).
J'ai survolé le code et ça manque cruellement de pattern et de convention de code/nommage. Cela dit, y'a des choses pas trop mal =)
Le seul truc que je trouve pas trop mal dans le framework du tuto OO c'est le fonctionnement du Router, malgré qu'il lui manque un système de parser avec un pattern strategy.
Le reste, ça manque d'optimisation (détaillé dans un post précédent).
Après le Router et le fait de parser un fichier XML c'est un choix, on pourrait très bien se contenter d'un fichier htaccess aussi.
Les pattern c'est le truc que j'ai moins bien compris en OO, faudra que je m'y replonge. ^^
Pour les conventions de nommage, j'ai un peu remanié à ma façon; je suis assez pointilleux là dessus (voir même maniaque xD). ^^
Un pattern, c'est une solution face à un problème de conception.
Ici, le problème de conception du router et de config c'est qu'ils ne sont utilisable qu'avec du XML.
Là où le pattern strategy vient "corriger" le problème c'est qu'il permet l'emploi de plusieurs formats en créant des classes Parser implémentant d'une interface commune (ou héritant d'une classe abstraite), il n'y plus qu'à donner l'instance du parser au router et en récupérant les routes sous forme de tableau en faisant " $routes = $this->parser->parse($file); "
En bref un bon framework doit pouvoir s'adapter à un peu tout et ne pas dépendre d'une solution en particulier c'est bien ça ?
Presque et ça veut dire injection de dépendance dans le cas présent.