PSR-3 استاندارد برنامه نویسی

PSR-3 : رابط کاربری logger

این استاندارد یک رابط کاربری برای ورود به کتابخانه ها را مطرح می کند.

هدف اصلی این استاندارد این است که به کتابخانه ها اجازه دهد یک شیء Psr\Log\LoggerInterface را دریافت کنند و logها را به صورت ساده و جامع در آن ثبت کنند. فریم ورک ها و CMSهایی که با نیازهای کاربران سروکار دارند رابط کاربری را براساس اهداف خود گسترش می دهند اما باید با این استاندارد سازگار باقی بمانند.

۱- مشخصات
۱-۱ : پایه
واسط کاربری logger ، هشت روش برای نوشتن logها در هشت سطح RFC5424 مطرح می کند .(debug, info, notice, warning, error, critical, alert, emergency)
نهمین روش،log، یک log level را بعنوان اولین آرگومان می پذیرد.فراخوانی این روش با یکی از ثابت های log level باید نتایج مشابهی با فراخوانی روش level-specific داشته باشد.کاربران نباید از یک سطح سفارشی بدون اطمینان از اینکه اجرای فعلی آن را ساپورت می کند استفاده کنند.

۱-۲ : پیام
همه روش ها، بوسیله متد ()toString__ یک رشته را به عنوان ورودی می پذیرند. پیاده ساز ممکن است مدیریت و بررسی ویژه ای برای ارسال objectها داشته باشد.
پیام ممکن است شامل متغیرهایی باشد که پیاده ساز ممکن است آن ها را با مقادیری از آرایه context جایگزین کند.نام متغیرها باید با key یا همان کلیدها در آرایه context مطابق باشند.
نام متغیرها باید در بین پرانتز باز و پرانتز بسته تعریف شود.و هیچ فضای خالی نباید بین پرانتزهای محدود کننده و متغیر وجود داشته باشد.
نام متغیرها باید تنها از کاراکترهای a-z و A-Z و ۰-۹ و خط زیر (underscore) و نقطه (.) تشکیل شده باشد. استفاده از دیگر کاراکترها برای تغییرات آتی مشخصات متغیرها رزرو شده می باشد.
پیاده سازها ممکن است از متغیرها برای پیاده سازی استراتژی های متفاوت و ترجمه logها برای نمایش استفاده کنند.

مثال زیر نمونه ایی از پیاده سازی متغیرهای ارائه شده برای اهداف مرجع است:

۱-۳ : محتوا
هر روش یک آرایه را به عنوان داده های محتوایی می پذیرد. این به معنای نگه داشتن هر گونه اطلاعات غیرمرتبطی است که در یک رشته به خوبی مشخص نشده است.آرایه می تواند هر چیزی را شامل شود.پیاده سازها باید اطمینان حاصل کنند که با داده های محتوا با حداقل قابلیت اطمینان برخورد می کنند. یک مقدار داده شده به محتوا نباید هیچ استثنایی، هر گونه خطای php، هشدار یا اطلاع رسانی را نمایش دهد.
اگر شی Exception در داده های context منتقل شود، باید در کلید “exception” قرار داده شود.استثنا Logging یک الگوی معمول است و به پیاده سازها اجازه ی استخراج ردیابی پشته را از استثنا زمانی که پشتیبان log از آن حمایت می کند را می دهد.پیاده سازها باید بررسی کنند که کلید ‘exception’ واقعا یک استثنا است، قبل از اینکه از آن استفاده کنند چرا که ممکن است شامل هرچیزی باشد.

۱-۴ : کلاس های کمکی و روابط کاربری
کلاس Psr\Log\AbstractLogger اجازه می دهد که LoggerInterface را به سادگی بوسیله گسترش دادن آن و پیاده سازی روش عمومی log اجرا کنید.هشت روش دیگر پیام و متن را به آن ارسال می کنند.
به طور مشابه،برای استفاده از Psr\Log\LoggerTrait تنها نیاز است روش عمومی log پیاده سازی شود. توجه داشته باشید به دلیل این که ویژگی ها نمی توانند رابط های کاربری را اجرا کنند، باید LoggerInterface را اجرا کنید.
Psr \ Log \ NullLogger همراه با رابط کاربری ارائه شده است. اگر ایجاد داده های محتوایی گران باشد استفاده از loggingهای شرطی راه بهتری خواهد بود.
Psr \ Log \ LoggerAwareInterface فقط شامل یک روش (setLogger(LoggerInterface $logger است. و می تواند توسط فریم ورک ها برای نمونه های auto-wire دلخواه با logger مورد استفاده قرار گیرد.
ویژگیPsr \ Log \ LoggerAwareTrait می تواند برای اجرای واسط کاربری معادل به راحتی در هر کلاس استفاده شود. این به شما اجازه می دهد به
this-> logger$ دسترسی پیدا کنید.
کلاس “Psr \ Log \ LogLevel” ثابت ها را برای هشت سطح ورودی نگه می دارد.

Package
واسط های کاربری و کلاس ها به خوبی کلاس های استثنایی مرتبط توصیف شده اند و همچنین و یک مجموعه تست برای تأیید پیاده سازی شما به عنوان بخشی از بسته psr / log ارائه شده است.

Psr \ Log \ LoggerInterface

Psr\Log\LoggerAwareInterface

Psr\Log\LogLevel


0 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *