تسجيل من طبقة نموذج Symfony
-
24-09-2019 - |
سؤال
أنا أعمل حاليًا في مشروع مع Symfony 1.4 والعقيدة 1.2. أنا أبحث عن طريقة مناسبة للقيام بتسجيل من طبقة النموذج.
في بعض فئات النماذج ، أستخدم Hook Postave () لإنشاء ملف مضغوط باستخدام exec () (لأن PHP ZIP لا توفر طريقة التخزين "المخزنة"). للتأكد من أن Everythings يعمل بشكل جيد ، أتحقق من رمز الإرجاع وأسجل خطأ إذا حدث خطأ ما. كان أول نهج سذالي هو القيام بذلك على هذا النحو:
if ($returnCode != 0) {
sfContext::getInstance()->getLogger()->debug(...);
}
كما تعلمون ، هذا لا يعمل بشكل جيد لأن SFContext ينتمي إلى طبقة وحدة التحكم ولا ينبغي استخدامه من طبقة النموذج. كانت محاولتي التالية هي استخدام مُنشئ النموذج لتمريره في مثيل SFLOGGER ، لكن هذا لا يعمل بسبب العقيدة 1.2 التي تحتفظ بمنشئ الاستخدام الداخلي (العقيدة 1.2 الوثائق).
أنا أتطلع إلى اقتراحاتك!
المحلول
يمكنك إضافة طريقة setLogger () إلى وظيفتك ، والتي تحصل على مثيل مسجل في معلمة ، وتعيينها على متغير داخلي ، مثل $ this-> logger. في وقت لاحق ، عندما تحتاج إلى تسجيل شيء ما ، افعل ذلك مثل if ($this->logger) { $this->logger->debug(...); }
.