جامعه برنامه نویسان و توسعه دهندگان پی اچ پی بسیار بزرگ و پراکنده است .هر زبان برنامه نویسی، دارای استانداردها و قوانین مربوط به خودش است که زبان PHP نیز از این قائده مستثنا نیست. استانداردهای PSR که مخفف PHP Standards Recommendation هستند، استانداردهایی معمول در PHP هستند که اکثر توسعه دهندگان PHP از آنها تبعیت میکنند. اما استانداردهای سری PSR، استانداردهای لازم الجرا نیستند و هر کسی میتواند آنها را نادیده بگیرد و از استانداردهای خودش استفاده کند، اما از آنجا که استفاده از این استانداردها باعث یکپارچگی در کدهای PHP خواهد شد، بنابراین استفاده از آنها توصیه میشود.
هر کدام از استانداردهای سری PSR به یک معقوله ای جدا در PHP اشاره میکنند.
این سبک ها عبارتند از:
Autoloading Standard : PSR-0
Basic Coding Standard : PSR-1
Coding Style Guide : PSR-2
Logger Interface : PSR-3
Improved Autoloading : PSR-4
HTTP Message Interfaces : PSR-7
لاراول از PSR-2 پیروی می کند و در استاندارد autoload از PSR-4
استاندارد PSR-2 به نوعی گسترش استاندارد PSR-1 است.
شما برای بررسی هر یک از استانداردهای کد نویسی میتوانید از ابزاری مانند CodeSniffer استفاده کنید. افزونه های مختلفی برای ویرایشگر های متن وجود دارند که کار مشابهی را انجام می دهند همانند sublime-phpcs که بررسی استاندارد کدهای نوشته شده توسط ویرایشگر متن Sublimetext را بعهده دارد.
ابزار دیگری با نام PHP Coding Standards Fixer یا (php-cs-fixer.phar) وجود دارد که به صورت خودکار کد شما را نسبت به استاندارد های تعریف شده بررسی می کند و تغییرات لازم را بصورت اتوماتیک انجام می دهد بطوری که نیاز نیست شما کاری بصورت دستی انجام دهید.
هدف اصلی این استاندارد این است که سردرگمی شما در زمانی که کدهای دیگران را میبینید کمتر شود، که اینکار با رعایت نکات و استایل های کدنویسی توسط تمام برنامه نویسان PHP قابل انجام است.
استفاده از این استانداردها در تمام پروژه های PHP چه متن باز یا تجاری توصیه میشود که باعث هماهنگی بیشتر بین برنامه نویسان خواهد شد.
عمومی
پایه استاندارد
استانداردهای PSR-1 باید رعایت شود.
فایلها
تمام فایلهای PHP باید از Unix LF برای ایجاد خط جدید یا شناسایی پایان خط استفاده کنند (سیستم عامل ویندوز از CR استفاده میکند).
تمام فایلهای PHP باید دارای یک خط خالی در پایان فایل باشند.
علامت تگ پایان PHP یا <؟ باید در فایلهایی که تنها، حاوی کد PHP هستند حذف شوند.
خطها
محدودیت شدیدی در طول خط نباید وجود داشته باشد.
محدودیت ملایم بر روی طول خط باید 120 کاراکتر باشد، که در صورتی که بیشتر از 120 کاراکتر شد برنامه باید هشدار بدهد، اما هیچ اجباری مبنی بر رعایت آن نباید وجود داشته باشد.
خطها میتوانند بیشتر از 80 کاراکتر نباشند و خطهای طولانیتر به چند خط تبدیل شوند.
هیچ کاراکتر فاصلهای نباید در انتهای خطهای غیر خالی وجود داشته باشد.
فایلهای PHP میتوانند دارای خطهای خالی برای افزایش خوانایی داشته باشند.
در هر خط تنها باید یک statement وجود داشته باشد.
تورفتگی
فایلهای PHP باید از 4 کاراکتر فاصله برای تورفتگی استفاده کنند. همچنین برای اینکار نباید از Tab استفاده شود.
کلمات کلیدی
کلمات کلیدی PHP باید به صورت حروف کوچک (Lower Case) استفاده شوند.
کلمات کلیدی (ثابتهای) true, false و null باید به صورت حروف کوچک (Lower Case) استفاده شوند.
فضای نام (Namespace) و Use
زمانی که از namespace استفاده میشود باید یک خط خالی بعد از آن وجود داشته باشد.
تمام استفاده از کلمه کلیدی use باید بعد از namespace مورد استفاده قرار بگیرد.
هر use فقط باید برای یک کلاس مورد استفاده قرار بگیرد.
یک خط خالی بعد از استفاده از کلمات کلیدی use باید وجود داشته باشد.
ساختارهای کنترلی
قوانین عمومی زیر برای تمام ساختارهای کنترلی میباشد.
یک فاصله باید بعد از کلمه کلیدی ساختار کنترلی وجود داشته باشد.
هیچ فاصلهایی نباید بعد از پرانتز باز کننده وجود داشته باشد.
هیچ فاصلهایی نباید قبل از پرانتز بسته کننده وجود داشته باشد.
یک فاصله باید بین پرانتز بسته کننده و بریس باز کننده وجود داشته باشد.
بدنه ساختار کنترلی باید یک بار تورفتگی داشته باشند.
بریس بسته کننده باید در خطی جداگانه وجود داشته باشد.
ساختار if, elseif و else
ساختار if باید به صورت زیر باشد. به جایگاه پرانتزها، فاصله ها و بریسها توجه کنید. همچنین کلمات کلیدی else و elseif در همان خط بریس بسته کننده ساختار قبلی هستند.
ساختار while و do while
ساختار while باید مشابه زیر باشد. به جایگاه پرانتزها، فاصله ها و بریسها توجه کنید.