autoload avec Zend Framework - PHP - Programmation
Marsh Posté le 06-01-2010 à 21:42:41
un truc du style
Code :
|
Marsh Posté le 08-01-2010 à 12:28:24
Si j'ai bien suivi ce qu'en dit Julien Pauli, le code pour remplacer
Code :
|
est
Code :
|
Mais cela ne répond pas à la question. Dans l'exemple de la page 32 de son bouquin, il décide d'utiliser une classe Loader personnelle, qui ne figure pas sous le répertoire "Zend", mais sous le répertoire "My", sans d'ailleurs indiquer où se situe ce répertoire "My".
Comme l'auteur travaille avec Zend Framework sous Eclipse, j'ai pensé que "My" se situerait plutôt sous le répertoire "library" de son projet PHP. En consultant le source de ses exemples (visible ici : http://www.zfbook.fr), je constate que "My" se situe en réalité sous le repertoire "examples" dans lequel il a placé son fichier "zend_loader_advanced.php", ce qui complique encore le problème.
Ce répertoire "My" n'est probablement pas déclaré dans l'include_path de php.ini, ce qui serait particulièrement lourd.
Donc, la question reste posée : comment traduire en version 1.8 le fichier examples\zend_loader_advanced.php
Code :
|
dans lequel le nouveau Looader se trouve sous "My", et "My" se trouvant sous le répertoire "examples" ?
Dans tout ce que j'ai testé, le navigateur râle parce qu'il s'obstine à vouloir utiliser le loader présent sous le répertoire "Zend", avec des avertissements du genre :
Warning: include(My\Date.php) [function.include]: failed to open stream: No such file or directory in C:\PHP\ZF-library\Zend\Loader.php on line 83
Warning: include() [function.include]: Failed opening 'My\Date.php' for inclusion (include_path='.;c:\PHP\ZF-library;C:\PHP\pear') in C:\PHP\ZF-library\Zend\Loader.php on line 83
Marsh Posté le 08-01-2010 à 13:29:25
je t'invite a lire le quickstart
http://framework.zend.com/docs/quickstart
malheureusement y'a eu de gros changement entre la 1.6 et la 1.9
meme si on si retourve niveau MVC, la mise en place des project et differente
on utilise Zend Application maintenant
Marsh Posté le 08-01-2010 à 14:01:45
Merci. J'ai l'impression que le problème risque de se répéter au fur et à mesure que j'avancerai dans le bouquin. Aussi, je vais commencer par récupérer la version utilisée par l'auteur (v1.6.2). Le premier objectif, c'est de comprendre le framework. Si je ne rencontre pas trop de difficultés, je passerai ensuite à la version la plus récente. Si le bouquin est incompréhensible, je n'insiste pas et passe directement à la nouvelle version. (En fait, je regarderai probablement un peu des deux à la fois).
N'empêche que j'aurais bien aimé avoir la solution : comment le code présenté se présenterait-il en v1.9.x ?
Marsh Posté le 06-01-2010 à 16:17:36
Bonjour, et bonne année à tous.
Parmi mes bonnes résolutions pour 2101, essayer d'apprendre à programmer de façon un peu plus pro.
J'utilise PHP, et me suis tourné vers Zend Framework, histoire de me pousser un peu du côté des langages à objets.
Pour cela, je viens d'acheter "Zend Framework, bien programmer en PHP".
Ce qui signifie :
1 - que je ne connais pas encore Zend Framework.
2 - que j'aimerais apprendre à l'utiliser grâce à ce bouquin.
3 - que je m'attends à trouver dans ce bouquin l'essentiel des informations utiles pour progresser. (Et non tout savoir d'avance).
Dès la page 32, problème ! Les exemples sont écrits pour une version obsolète de Zend Framework (1.6.2), alors que la version courante est la 1.9.6.
Or, depuis la version 1.8.x, il y a eu de gros changements avec l'autoload.
Pour remplacer le code déprécié suivant :
on peut (entre autres) mettre ceci :
J'ai trouvé deux ou trois variantes sur Internet, mais bon, celle-ci a l'air de marcher.
Dans l'exemple de la page 32, j'ai un soucis. On décide d'utiliser un loader personnel, qui se trouve sous un répertoire "My", au lieu du loader standard de la librairie Zend. Voici le code :
On part du principe que le répertoire "My" se trouve dans le même répertoire que l'exemple php à corriger (c'est là que l'auteur du bouquin l'a mis, en oubliant juste de le préciser). Sous My, il y a la classe personnalisée Loader.php, celle que l'on veut utilser dans l'instruction Zend_Loader::registerAutoload('My_Loader');
Le problème, donc, c'est que je ne suis pas du tout certain d'avoir su écrire l'équivalent pour Zend Framework >= 1.8.
J'ai essayé ceci :
Et voici le code de loader.php, situé sous My :
J'obtiens un résultat,mais j'ignore si c'est My_Loader qui est utilisé ou le Loader standard, car si je supprime la ligne include (qui fait râler ZendFramework pour Eclipse [unsafe use of variable in call include()/require()], ça marche aussi. Je suppose que le loader standard prend le relais, mais du coup j'ignore si j'ai bien adapté le programme initial.
Votre avis ?