2010-04-04 8 views
2

Je travaille actuellement sur un projet avec symfony 1.4 et Doctrine 1.2. Je suis à la recherche d'un moyen approprié de faire la journalisation à partir de la couche du modèle.Connexion à partir de la couche modèle de symfony

Dans certaines classes de modèles, j'utilise le hook d'enregistrement postSave() pour créer un fichier ZIP en utilisant exec() (puisque le zip de PHP ne fournit pas la méthode de stockage 'Stored'). Pour être sûr que tout fonctionne correctement, je vérifie le code de retour et enregistre une erreur si quelque chose ne va pas. Ma première approche naïve était de le faire comme ceci:

if ($returnCode != 0) { 
    sfContext::getInstance()->getLogger()->debug(...); 
} 

Comme vous le savez, cela ne fonctionne pas si bien que sfContext appartient à la couche de contrôleur et ne doit pas être utilisé à partir de la couche de modèle. Mon prochain essai a été d'utiliser le constructeur du modèle pour passer dans une instance de sfLogger, mais cela ne fonctionne pas parce que Doctrine 1.2 a réservé le constructeur pour une utilisation interne (Doctrine 1.2 Documentation).

Je suis impatient de vos suggestions!

Répondre

1

Vous pouvez ajouter une méthode setLogger() à votre fonction, qui obtient une instance de consignateur dans un paramètre et la définit sur une variable interne, telle que $ this-> logger. Plus tard, lorsque vous avez besoin de vous connecter, faites comme if ($this->logger) { $this->logger->debug(...); }.

+0

Merci beaucoup. Il semble que ce soit la seule façon de le faire en ce moment (sans Doctrine 2 ou Symfony 2 ;-) – naag

Questions connexes