در پست قبلی با PSR آشنا شدیم و فهمیدیم چی هستش و قراره برامون چیکار کنه. همچنین با PSR-1 هم آشنا شدیم. حالا در ادامه با PSR-3 و PSR-4 آشنا میشیم.
قبل از شروع باید به این نکته هم اشاره کنم که دلیل توضیح ندادن PSR-2، منسوخ شدن اون هستش.
اگر بخوام خیلی ساده این استاندارد رو توضیح بدم باید بگم این استاندارد برای سیستمهای لاگینگ هستش تا به صورت سراسری بتونیم از اونها داخل تمام پروژههامون استفاده کنیم. (توضیح کامل این PSR داخل این پست نمیگنجه و اینجا فقط در حدی که باهاش آشنا بشیم در موردش مینویسم اما در آینده یه پست با مثالهای خوب در مورد این PSR خواهیم داشت)
حالا بریم ببینیم باید چیکار کنیم...
قدم اول برای استفاده از این استاندارد، استفاده از پکیج psr/log هستش. این پکیج تمام اینترفیسها، کلاسها و تریتهایی که برای پیادهسازی و استفاده از این استاندارد نیاز داریم رو در خودش داره.
اولین چیزی که نیاز داریم در مورد محتویات این پکیج بدونیم، اینترفیس LoggerInterface هستش.
این اینترفیس ۸ متد رو در اختیار ما قرار میده که به وسیلهی اونها میتونیم لاگهامون رو توی ۸ لول زیر ایجاد کنیم:
همچنین یه متد دیگه هم بهمون میده به اسم log که ورودی اول این متد، یکی از لولهای بالا هستش.
تمام متدهای بالا باید یه ورودی message داشته باشن که رشته قبول کنه. (همچنین میتونه آبجکتهایی که متد ()toString__ دارن هم قبول کنه)
علاوه بر message، متدها یه ورودی context هم نیاز دارند که آرایه قبول میکنه. این ورودی به منظور نگهداری اطلاعات اضافی که قابلیت تبدیل شدن به رشته رو ندارند استفاده میشه.
این رو باید بدونیم که اگر خواستیم یه سری اکسپشن به عنوان context به لاگر بفرستیم حتما باید داخل کلید exception قرارشون بدیم.
حالا وقتی بخوایم داخل یکی از کلاسهامون عملیات لاگ کردن رو انجام بدیم فقط کافیه یه ورودی از نوع LoggerInterface رو به کلاسمون تزریق کنیم و بعد به راحتی از متدهایی که در اختیارمون قرار میده استفاده کنیم. اینجوری میتونیم مطمین باشیم که همیشه لاگری که توسط استاندارد PSR-3 ایجاد شده به کلاسمون تزریق میشه و کلاسمون میتونه همهجا بدون مشکل کار کنه.
در آینده داخل یه پست فقط و فقط در مورد این PSR صحبت میکنیم و یه لاگر هم با استفاده از این استاندارد میسازیم.
این استاندارد یکی از استانداردهای مهم و پر کاربرد هستش و همونطور که از اسمش پیداست در مورد لود خودکار کلاسها هستش.
اگه نمیدونید لود خودکار یا همون Autoloading چی هستش میتونید از این مطلب استفاده کنید.
و حالا بریم سراغ لیست مواردی که باید در مورد PSR-4 بدونیم.
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
۳. کدی که عملیات اتولود رو انجام میده نباید هیچ اروری بده (اکسپشن بده) و همچنین نباید هیچ مقداری رو برگردونه.
مورد دوم یه سری نکته داره که اونها رو اینجا مینویسم.(نمیدونم چجوری میشه توی ویرگول لیست تو در تو درست کرد برای همین آوردمشون اینجا وگرنه باید بره زیر همون مورد دوم :) )
خب دوستان در این مطلب با استانداردهای PSR-3 و PSR-4 آشنا شدیم. هر دوی این استانداردها نکتههای بیشتری دارند که ایشالا در آینده به صورت مفصل در پستی جداگانه بهشون میپردازیم.