14-04-2009, 07:56 AM
naholir à raison; comme qui dirais je fais aussi plus confiance au constructeur qu'au destructeur:
- la destruction en fin de script quand PHP fait son nettoyage c'est problèmatique, ordre de destruction des objets pas fiable sans compter que j'ai pas trouvé comment gérer les exceptions et autre erreurs comme je le voudrais (galère si tu as déjà envoyé le contenu au client; de tout à coup revenir en arrière ou de l'avertir parce que tu plante ta majBDD)
- dans les autre cas tu préfère quoi: une version explicite: $toto->majBDD() ou implicite: supprimer($toto); dans les 2 cas finalement tu as une commande que tu dois écrire, non ?
(à part bien sûr si tu fais déjà la destruction parce que t'as des objets volumineux, ou je sais quelle raison; dans ce cas là effectivement si t'as confiance dans la destruction explicite de ton objet autant profiter.)
autre variante que tu peux faire c'est une gestion de type événementiel:
dans le constructeur de $toto (ou a un autre moment: après tout si l'objet est pas modifié pourquoi faire un appel automatique à majBDD ) tu l'enregitre dans une pile:
gestionnaire->enregistrer('justeavantaffichage',$toto->majBDD);
et dans ton programme; juste avant d'envoyer la page tu auras un appel pour executer le contenu de ta pile:
gestionnaire->lancer('justeavantaffichage');
en terme de codage: tu as toujours une commande à écrire quelque part
soit "$toto->majBDD", soit "gestionnaire->enregistrer('justeavantaffichage',$toto->majBDD)" soit detruire($toto).
je préfère les 2 premières options. (la première: parce que c'est explicite; la 2e pour sa souplesse). La 3e... j'ai de la peine, j'ai été traumatisé par des débugage foireux sur des destructions anarchiques.
- la destruction en fin de script quand PHP fait son nettoyage c'est problèmatique, ordre de destruction des objets pas fiable sans compter que j'ai pas trouvé comment gérer les exceptions et autre erreurs comme je le voudrais (galère si tu as déjà envoyé le contenu au client; de tout à coup revenir en arrière ou de l'avertir parce que tu plante ta majBDD)
- dans les autre cas tu préfère quoi: une version explicite: $toto->majBDD() ou implicite: supprimer($toto); dans les 2 cas finalement tu as une commande que tu dois écrire, non ?
(à part bien sûr si tu fais déjà la destruction parce que t'as des objets volumineux, ou je sais quelle raison; dans ce cas là effectivement si t'as confiance dans la destruction explicite de ton objet autant profiter.)
autre variante que tu peux faire c'est une gestion de type événementiel:
dans le constructeur de $toto (ou a un autre moment: après tout si l'objet est pas modifié pourquoi faire un appel automatique à majBDD ) tu l'enregitre dans une pile:
gestionnaire->enregistrer('justeavantaffichage',$toto->majBDD);
et dans ton programme; juste avant d'envoyer la page tu auras un appel pour executer le contenu de ta pile:
gestionnaire->lancer('justeavantaffichage');
en terme de codage: tu as toujours une commande à écrire quelque part
soit "$toto->majBDD", soit "gestionnaire->enregistrer('justeavantaffichage',$toto->majBDD)" soit detruire($toto).
je préfère les 2 premières options. (la première: parce que c'est explicite; la 2e pour sa souplesse). La 3e... j'ai de la peine, j'ai été traumatisé par des débugage foireux sur des destructions anarchiques.