17-11-2009, 06:39 PM
(Modification du message : 17-11-2009, 10:56 PM par Sephi-Chan.)
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 :
et là, il faut bien inclure tous les fichiers sources des classes 'type' (on imagine que le fichier a pour nom le nom de la classe qui est stocké dans $enreg['Type'])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 :
<?php
class F
{
protected $ListeObjets;
// creer la liste des objets en fonction de tableau de données $enregs[objet][donnée de l'objet]
function CreerListe( $enregs)
{
foreach ($enregs as $enreg)
{
$classe = $enreg['Type'];
// création de l'objet concerné
$ListeObjets[ $enreg['id'] ] = new $classe($enreg);
}
}
}
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 :
<?php
class F
{
protected $ListeObjets;
// creer la liste des objets en fonction de tableau de données $enregs[objet][donnée de l'objet]
function CreerListe( $enregs)
{
foreach ($enregs as $enreg)
{
$classe = $enreg['Type'];
include_once ($enreg['Type'].'.php'); //c'est ici que ca se passe
// création de l'objet concerné
$ListeObjets[ $enreg['id'] ] = new $classe($enreg);
}
}
}