سؤال

أنا أعمل حاليًا في مشروع مع 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(...); }.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top