پیشنهاد استانداردهای پی اچ پی PHP Standard Recommendation به اختصار PSR مشخصهای در پی اچ پی است که توسط گروه قابلیت همکاری چارچوبهای پی اچ پی PHP Framework Interoperability Group به اختصار PHP-FIG از سال ۲۰۰۹ منتشر میشود. مستندات استانداردهای PSR در وبسایت این گروه با رعایت RFC2119 نوشته شده است.
وظیفه اصلی PHP-FIG در PSR استانداردسازی مفاهیم برنامه نویسی در زبان پی اچ پی است. هدف این گروه ایجاد قابلیت همکاری مشترک بین جامعه برنامه نویسان چارچوبهای نرم افزاری مختلف به زبان پی اچ پی است تا با رعایت مبانی فنی مشترک و استفاده از پیاده سازی یکسان مفاهیم بنیادی در برنامه نویسی و آزمون نرم افزار به صورت یکپارچه و همخوان عمل کنند.
با این کار به راحتی میتوان از تولیدات نرم افزاری و بستههای موجود توسعه یافته تحت هر یک از این چارچوبها در چارچوبهای دیگر نیز استفاده کرد.
ساختار استانداردهای PSR
این استانداردها با شماره عددی در مقابل عبارت PSR شناسایی میشوند. برای مثال PSR-0 که اولین استاندارد در این گروه بود استاندارد بارگذاری اتوماتیک کلاسها Autoloading Standard است. این استاندارد بعدها با استاندارد PSR-4 جایگزین شد. استاندارد PSR-1 مربوط به استاندارد کدنویسی پایه Basic Coding Standard پرداخته است. تا نوامبر سال ۲۰۱۹ این استانداردها به عدد ۱۹ رسیده اند. در جدول زیر این استانداردها را مشاهده میکنید:
اعضای استانداردهای PSR
از سال ۲۰۰۹ میلادی که ۵ نفر از توسعه دهندگان چارچوبهای نرم افزاری تحت زبان پی اچ پی در PHP|tek گرد هم آمدند و برای تشکیل کارگروهی با هدف استانداردسازی رویه تولید نرم افزار بر پایه چارچوبهای نرم افزاری به توافق رسیدند، روز به روز بر تعداد این اعضا افزوده شده تا جایی که در نوامبر سال ۲۰۱۹ این تعداد از ۲۰ نفر گذشته است.
ترک گروه از سوی سیمفونی
فابین پوتنسیر Fabien Potencier مدیر پروژه چارچوب سیمفونی Symfony Framwork در ۲۰ نوامبر ۲۰۱۸ پس از عضویت در یک دوره ۹ ساله گروه PHP-FIG و استاندارد PSR را ترک کرد. او در این باره گفت:
گروه PHP-FIG دیگر در پی قابلیت همکاری مشترک بین چارچوبهای نرم افزاری به زبان پی اچ پی نیست. این گروه به دنبال ایجاد یک فریم ورک واحد بر مبنای تفکر از پیش تعیین شده کمیته همکاری است.
این اتفاق در پی آن صورت گرفت که موج جدیدی از PSRهای متعدد بدون درخواست هیچ یک از چارچوبهای شناخته شده شکل گرفت. استانداردهایی که چارچوبهای موجود برای پیاده سازی آن ناچار بودند کل اکو سیستم خود را شکسته و بازنویسی کنند.
به عنوان مثال میتوان به استانداردهای PSR-6 و PSR-7 و PSR-14 اشاره کرد.
ترک گروه توسط دیگران
اعضای دیگری نیز از گروه قابلیت همکاری چارچوبهای پی اچ پی به دلایل مشابه کناره گیری و اقدام به لغو عضویت کردند. از مهمترین آنها میتوان به تیلور اوتول Taylor Otwell از پروژه لاراول Laravel و گیلهرم بلانکو Guilherme Blanco از پروژه دکترین Doctrine و جاناتان اسکو Jonathan Eskew از پروژه گازل Guzzle و کریس والسمیت Kris Wallsmith از پروژه استیک Assetic ویلیام دوراند William Durand از پروژه پراپل Propel اشاره کرد.
آیا استانداردهای PSR خواهند مرد؟
با ترک گروه توسط سیمفونی سوالات زیادی در خصوص گام بعدی پرسیده میشود. آیا سیمفونی همچنان از PSRهای قدیمیتر که متعهد به رعایت آنها بوده پشتیبانی میکند؟ چه بر سر استاندارد Autoloading میآید؟ آیا این کناره گیری بر قابلیتهای استفاده سیمفونی از کامپوزر و دیگر بستههای حیاتی در پی اچ پی اثر گذار است؟