هدف اصلی این استاندارد این است که سردرگمی شما در زمانی که کدهای دیگران را میبینید کمتر شود، که اینکار با رعایت نکات و استایل های کدنویسی توسط تمام برنامه نویسان PHP قابل انجام است. استفاده از این استانداردها در تمام پروژه های PHP چه متن باز یا تجاری توصیه میشود که باعث هماهنگی بیشتر بین برنامه نویسان خواهد شد.
هر کدام از استانداردهای سری PSR به یک معقوله ای جدا در PHP اشاره میکنند. در جدول زیر نام و عنوان استاندارها نمایش داده است. با کلیک بر روی عنوان می توانید شرح کامل استاندارد و قوانین تعریف شده را مشاهده نمایید:
جدول استاندارد های PSR
Status | Num | Title | Editor(s) | Coordinator | Sponsor |
---|---|---|---|---|---|
X | ۰ | Autoloading Standard | Matthew Weier O’Phinney | N/A | N/A |
A | ۱ | Basic Coding Standard | Paul M. Jones | N/A | N/A |
A | ۲ | Coding Style Guide | Paul M. Jones | N/A | N/A |
A | ۳ | Logger Interface | Jordi Boggiano | N/A | N/A |
A | ۴ | Autoloading Standard | Paul M. Jones | Phil Sturgeon | Larry Garfield |
D | ۵ | PHPDoc Standard | Mike van Riel | Vacant | Vacant |
A | ۶ | Caching Interface | Larry Garfield | Paul Dragoonis | Robert Hafner |
A | ۷ | HTTP Message Interface | Matthew Weier O’Phinney | Beau Simensen | Paul M. Jones |
D | ۸ | Huggable Interface | Larry Garfield | Vacant | Vacant |
D | ۹ | Security Advisories | Michael Hess | Korvin Szanto | Larry Garfield |
D | ۱۰ | Security Reporting Process | Michael Hess | Larry Garfield | Korvin Szanto |
A | ۱۱ | Container Interface | Matthieu Napoli, David Négrier | Matthew Weier O’Phinney | Korvin Szanto |
D | ۱۲ | Extended Coding Style Guide | Korvin Szanto | Alexander Makarov | Robert Deutz |
A | ۱۳ | Hypermedia Links | Larry Garfield | Matthew Weier O’Phinney | Marc Alexander |
D | ۱۴ | Event Manager | Chuck Reeves | Brian Retterer | Roman Tsiupa |
D | ۱۵ | HTTP Middlewares | Woody Gilk | Paul M Jones | Jason Coward |
A | ۱۶ | Simple Cache | Paul Dragoonis | Jordi Boggiano | Fabien Potencier |
D | ۱۷ | HTTP Factories | Woody Gilk | Roman Tsiupa | Paul M Jones |
_Legend: A = Accepted | D = Draft | R = Review | X = Deprecated_ |
استاندارد PSR-2 به نوعی گسترش استاندارد PSR-1 است.
شما برای بررسی هر یک از استانداردهای کد نویسی میتوانید از ابزاری مانند CodeSniffer استفاده کنید. افزونه های مختلفی برای ویرایشگر های متن وجود دارند که کار مشابهی را انجام می دهند همانند sublime-phpcs که بررسی استاندارد کدهای نوشته شده توسط ویرایشگر متن Sublimetext را بعهده دارد.
ابزار دیگری با نام PHP Coding Standards Fixer یا (php-cs-fixer.phar) وجود دارد که به صورت خودکار کد شما را نسبت به استاندارد های تعریف شده بررسی می کند و تغییرات لازم را بصورت اتوماتیک انجام می دهد بطوری که نیاز نیست شما کاری بصورت دستی انجام دهید.
تعدادی از قوانین PSR عبارتند از :
پایه استاندارد
- استانداردهای PSR-1 باید رعایت شود.
فایلها
- تمام فایلهای PHP باید از Unix LF برای ایجاد خط جدید یا شناسایی پایان خط استفاده کنند (سیستم عامل ویندوز از CR استفاده میکند).
- تمام فایلهای PHP باید دارای یک خط خالی در پایان فایل باشند.
- علامت تگ پایان PHP یا <؟ باید در فایلهایی که تنها، حاوی کد PHP هستند حذف شوند.
خط ها
- محدودیت شدیدی در طول خط نباید وجود داشته باشد.
- محدودیت ملایم بر روی طول خط باید ۱۲۰ کاراکتر باشد، که در صورتی که بیشتر از ۱۲۰ کاراکتر شد برنامه باید هشدار بدهد، اما هیچ اجباری مبنی بر رعایت آن نباید وجود داشته باشد.
- خطها میتوانند بیشتر از ۸۰ کاراکتر نباشند و خطهای طولانیتر به چند خط تبدیل شوند.
- هیچ کاراکتر فاصلهای نباید در انتهای خطهای غیر خالی وجود داشته باشد.
- فایلهای PHP میتوانند دارای خطهای خالی برای افزایش خوانایی داشته باشند.
- در هر خط تنها باید یک statement وجود داشته باشد.
تورفتگی
- فایلهای PHP باید از ۴ کاراکتر فاصله برای تورفتگی استفاده کنند. همچنین برای اینکار نباید از Tab استفاده شود.
کلمات کلیدی
- کلمات کلیدی PHP باید به صورت حروف کوچک (Lower Case) استفاده شوند.
- کلمات کلیدی (ثابتهای) true, false و null باید به صورت حروف کوچک (Lower Case) استفاده شوند.
فضای نام (Namespace) و Use
- زمانی که از namespace استفاده میشود باید یک خط خالی بعد از آن وجود داشته باشد.
- تمام استفاده از کلمه کلیدی use باید بعد از namespace مورد استفاده قرار بگیرد.
- هر use فقط باید برای یک کلاس مورد استفاده قرار بگیرد.
- یک خط خالی بعد از استفاده از کلمات کلیدی use باید وجود داشته باشد.