استانداردهای برنامه نویسی PHP یا PSR چیست؟ اگر با زبان برنامه نویسی PHP کار کرده باشید، متوجه شده اید که نسبت به زبانهای برنامه نویسی دیگر زبان بسیار آزادی است. یعنی هیچ استاندارد سخت گیرانه خاصی برای نام گذاری کلاس ها، متغیرها و... برای آن تعریف نشده است. بنابراین هر برنامه نویسی به تناسب سلایق خود، استایل کدزنی خودش را داشته است. این وضعیت باعث میشد خواندن و حتی فهمیدن کدهای برنامه نویسان دیگر کمی مشکل شود!
البته نمیتوان این مسئله را همیشه به صورت یک ایراد دید. چرا که در مواردی تنها برنامه نویسی که روی پروژه کار کرده و خواهد کرد، خود شما هستید. اما به هر حال همیشه روش استاندارد بهترین است! چون ممکن است در آینده، کد ساده شما کم کم بزرگ و بزرگتر شود! انتخاب با شماست!
در کنفرانس PHP-tek سال 2009 برنامه نویسانی که در حال ارائه پروژههای خود بودند، راهکارهایی برای همکاری روی پروژههای یکدیگر ارائه کردند. جای تعجب نیست اگر بدانید هدف اصلی آن ها، ایجاد استانداردهایی برای ساده کردن همکاریهای بین پروژه ای بود. حالا این گروه، تحت نام FIG یا Framework Interop Group (گروه همکاری متقابل بین فریمورکی) در حال فعالیت است. هدف این گروه این است که ترکیب و استفاده از فریمورکها و کتابخانههای PHP برای برنامه نویسان راحتتر شود. گروه FIG در مورد مجموعه ای از قوانین و استانداردها در کدنویسی PHP به توافق رسیدند. این استانداردها PSR نام گرفت.
از نام FIG اینطور به نظر میرسد که فقط پروژههای فریمورکی میتوانند مشمول آن شوند. اما برعکس، تمام برنامه نویسان در پروژههای مختلف PHP میتوانند به عنوان اعضای رای دهنده در FIG فعالیت کنند. FIG یک اکوسیستم مشترک بین تمام برنامه نویسان PHP (و نه فقط برنامه نویسان پروژههای فریمورک) است. به عنوان مثال سیمفونی و CakePHP هر دو از اعضای رای دهنده FIG هستند. اما به هر حال حتی کامپوزر هم میتواند با وجود فریمورک نبودنش از اعضای رای دهنده باشد!
هدف PSR چیست؟
هدف FIG ایجاد یک زبان و دیالوگ مشترک بین برنامه نویسان PHP، برای دستیابی به راهکارهای همکاری آسان بین آنها (Interoperability) است. این دیالوگ مشترک، PSR یا پیشنهاداتی برای استاندارد کردن (PHP Standard Recommendations) PHP نام گرفت. در حال حاضر مجموعه استانداردهای PSR از PSR-0 تا PSR-4 تعریف شده است. در ادامه با این PSRها به طور خلاصه آشنا خواهیم شد.
PSR-0 و PSR-4 برای قوانین Autoloading
گفتیم اولین بار این کنفرانس برای آسان سازی ترکیب کتابخانهها و فریمورکها تشکیل شد. بنابراین منطقی است که اولین PSR ایجاد شده، مربوط به استانداردهای پایه ای این ترکیبها باشد. اولین PSR به تعریف استانداردهای Autoloading کلاسها در پوشههای برنامه اختصاص دارد.
البته از سال 2014، استانداردهای PSR-0 منقضی شد و به جای آن PSR-4 تعریف شد. در PSR-4 علاوه بر قوانین تعریف شده در PSR-0، استانداردهایی برای نامگذاری و ساختار پوشه بندی برنامه برای Autoloading تنظیم شده است.
PSR-1 و PSR-2 برای استانداردهای کدنویسی
ممکن است نتوانیم بگوییم که PSR-1 و PSR-2 همانند هم هستند. اما حداقل میتوانیم بگوییم این دو استاندارد از لحاظ حوزه استفاده، بسیار شبیه هم هستند. PSR-1 در واقع راهنمایی است که به شما برای کدزنی درست و استاندارد کمک میکند. در مستندات PSR-2 نوشته شده است که این PSR، استانداردهای PSR-1 را بسط و گسترش میدهد. استاندارد PSR-2 مجموعه ای از قواعد قالب بندی کدهای پی اچ پی برای افزایش خوانایی آنها است.
PSR-3 برای ساخت کتابخانههای Logger
آخرین استاندارد PSR که در این مطلب به معرفی مختصر آن میپردازیم، PSR-3 است. PSR سوم به معرفی یک اینترفیس (Interface) استاندارد برای کتابخانه Logger اختصاص دارد. هدف اصلی این استاندارد این است که تمام کتابخانهها بتوانند از کلاس پیاده سازی شده از اینترفیس Psr/Log/LoggerInterface، آبجکت دریافت کنند. سپس بتوانند با استفاده از این آبجکت با یک روش ساده و مشترک لاگ کنند. در صورتی که با اینترفیسها آشنایی ندارید میتوانید مقاله ما با عنوان "Interface در برنامه نویسی شی گرا چیست؟" را مطالعه کنید.
لاگها کاربردهای بسیاری در برنامه نویسی دارند. معمولات توضیحات فنی در مورد ارورهای برنامه در فایلهای لاگ ذخیره میشوند. این کار باعث میشود خطایابی و تست برنامه نسبت به روش بدون لاگ بسیار سادهتر شود. همینطور با استفاده از فایلهای لاگ شما میتوانید رفتارهای کاربرانتان را دنبال (track) کنید. مثلا میتوانید با هر کلیک کاربر روی لینکهای مختلف سایت یک لاگ شامل آدرس لینک یا محل آن کلیک در صفحه، در فایل لاگ ذخیره کنید. با این روش میتوانید UX نرم افزار خود را به مرور زمان ارتقا ببخشید.
جمع بندی
زبان برنامه نویسی PHP هرگز یک استاندارد واحد برای کدنویسی نداشته است. بنابراین هر برنامه نویس پی اچ پی به تناسب سلیقه خود کدنویسی میکرده است. شاید برای پروژههای شخصی با مقیاس کوچک این روش مشکلی ایجاد نکند. اما برای پروژههای بزرگ تر- خصوصا آن هایی که چندین نفر رویشان کار میکنند- این روش میتواند واقعا مشکل آفرین باشد! سلیقه ای نوشتن کدها میتواند باعث تکرار کد و همینطور سخت فهمیده شدن آن شود. یعنی خوانایی یا Readability کد را پایین میآورد.
برای حل این مشکل استاندارد PSR ساخته شد. این استاندارد در واقع یک زبان مشترک و ساده بین برنامه نویسان زبان محبوب پی اچ پی است. در این مطلب با PSR آشنا شده و به طور خلاصه کاربرد PSRهای شماره صفر تا چهار را بررسی کردیم. برای آشنایی با هر PSR و یادگیری آن منتظر مقالات بعدی ما در مورد PSR باشید. میتوانید برای شروع به ما بگویید رعایت نکردن استانداردهای کدنویسی چه مشکلاتی را در گذشته برای شما به بار آورده است؟
۲ دیدگاه
۲۲ اسفند ۱۴۰۰، ۱۷:۰۰
خیلی لذت بردم ..ممنون از مطلالب خوبتون
حامد۲۲ اردیبهشت ۱۳۹۸، ۱۰:۰۰
مطلب خیلی مفید و جالبی بود، ممنون.
ولی ای کاش بیشتر مینوشتین، تا جایی که یادمه قوانین PSR بیشتر از 4 تا بودن!
https://www.php-fig.org/psr/