[Résolu] Include dynamique… Suis-je parti en vrille ? - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [Résolu] Include dynamique… Suis-je parti en vrille ? (/showthread.php?tid=4445) |
[Résolu] Include dynamique… Suis-je parti en vrille ? - Ter Rowan - 17-11-2009 hello J'implémente de plus en plus dans mon jeu (je devrais dire projet voire utopie mais bon ^^) ce qui tend à ressembler aux modèle Factory et Strategy (merci pour ces concepts là d'ailleurs) mais du coup, je me pose une question de performance. En effet, la création dynamique d'objets avec un choix dynamique de la (des) classe(s) utile(s) impliquent d'avoir inclus l'ensemble des fichiers php portant les sources des classes utilisées Et c'est là que le bas (bât ?) blesse grosso modo j'envisage un protocode du type : Code PHP :
je vois deux possibilités : - la secure facile : je fais en début de code autant d'include qu'il y a de classes susceptibles d'être instanciées par la classe F - celle que je crois optimisée mais j'ai un doute. Je fais des includes dans la boucle foreach, en dynamique donc Code PHP :
mais ça me perturbe, ca voudrait dire que je peux déclarer des classes dans le code d'autres classes, imbriquer le tout joyeusement... qu'en pensez vous ? edit : j'oubliais : supposons qu'on soit dans le cas ou 50... 100 ... 1000 classes sont possibles et que seuls 5-6 objets sont créés RE: Include dynamique...suis je parti en vrille ? - Anthor - 17-11-2009 Ça doit passer avec l'autoload non ? RE: Include dynamique...suis je parti en vrille ? - Ter Rowan - 17-11-2009 arf j'ai cherché sur l'autoload il y a quelques jours intrigué par je ne sais plus quelle réponse, et soit je me suis planté dans google, soit je n'ai vraiment pas été convaincu par les exemples présentés. ma vision de l'autoload : un script qui est appelé pour gérer les classes et identifie où sont stockées (dans quel répertoire) les classes. du coup, sauf que j'ai le doute parce que c'est toi qui m'en parle, mais je me demande quel est le lien ? (en plus suis fatigué et me suis un peu chauffé aujourd'hui :rip: donc cerveau pas très clair) RE: Include dynamique...suis je parti en vrille ? - Sephi-Chan - 17-11-2009 L'autoload permet d'inclure à la volée un fichier contenant une déclaration de classe (selon une règle d'inflexion que tu auras défini toi même dans la fonction __autoload() quand c'est nécessaire. Cf. PHP - Autoloading classes
Ça semble convenir à tes besoins… Mais peut-être ai-je mal compris ce que tu souhaitais faire. Sephi-Chan RE: Include dynamique...suis je parti en vrille ? - My Hotel - 17-11-2009 L'autoload, c'est une fonction : __autoload($class_name) que tu déclares au début de chaque script, qui charge dynamiquement les classes. C'est à dire : quand tu fais appel à une classe dans ton script, sans l'avoir inclus précédemment, il la charge automatiquement. Genre tu peux faire : Code PHP :
C'est plus clair? Donc pour moi, ça convient parfaitement, faut juste adopter un rangement unifié pour tes classes, puis définir ton autoload au début de ton script, et quand ta factory voudra instancier une classe, elle sera automatiquement incluse. Bye EDIT : grilled par Sephi -_- RE: Include dynamique...suis je parti en vrille ? - Anthor - 17-11-2009 Pour le rangement unifié, il suffit de remplacer les _ par des / par exemple, ainsi tu peux ranger tes classes dans des répertoires distincts. De même tu peux retrouver un fichier grâce au nom de la classe. Par exemple la classe Zend_Search_Lucene se trouvent forcement dans Zend/Search/Lucene.php RE: Include dynamique...suis je parti en vrille ? - Ter Rowan - 17-11-2009 oki la dessus mais... quelle différence par rapport à mon script, il bugguerait (je l'ai pas testé) parce que l'include est dans le code d'une classe plutôt qu'en dehors ? en fait je ne vois pas trop l'intérêt de l'autoload alors que je croyait à une "magie" au départ de plus j'ai lu qu'avec require, php n'évaluait que la première fois $classe donc si on a plusieurs valeurs qui arrivent les unes après les autres à $classe (factory par exemple) on se retrouverait avec require avec une seule et même classe chargée contrairement à l'include qui est évalué à chaque itération ? info ou un tox ? RE: Include dynamique...suis je parti en vrille ? - Anthor - 17-11-2009 le _once n'évalue qu'une fois, le require renvoi une alerte et une erreur fatale, le include ne lance qu'une alerte. Ton script ne buggera pas, simplement tu devras penser à inclure partout ou nécessaire alors que l'autoload est fait pour ça. RE: [Résolu]Include dynamique...suis je parti en vrille ? - Ter Rowan - 17-11-2009 oki merci je comprends mieux |