Хм, P.S.R.

Ако сте запален PHP програмист, има вероятност някой ден да срещнете акронима PSR – „Препоръка за стандартите на PHP“. В момента има 4 версии на стандарта: от PSR-0 до PSR-3. Помислете какви са те и защо са необходими.

Разказ

PHP никога не е имал единен стандарт за писане на код. Тези разработчици, които използват различни кодови бази, прекарват допълнително време в измисляне на свои собствени конвенции за именуване и стил на кодиране. Някои от тях приемат готови стандарти, като PEAR или Zend Framework, докато други пишат както си искат.

Рамкова група за оперативна съвместимост (концептуална група за оперативна съвместимост)

През 2009 г. на конференцията phptek хора, представляващи различни проекти, обсъдиха някои от параметрите на тези проекти. Не е изненадващо, че основната тема на дискусията беше предложението да се придържаме към набор от стандарти.

Доскоро тези хора се наричаха PHP Standards Group, но сега работят под търговската марка Framework Interoperability Group (FIG). Те смятаха, че оригиналното име не описва съвсем точно целта на тяхната група. С новото име групата стана по-свързана с рамките. Разработчиците, представляващи всякакви проекти, също бяха приети в групата като хора с право на глас.

FIG възнамерява да приеме в групата не само разработчици на рамка, но и поддръжници на други подходи за програмиране на PHP. Например, рамки като Symfony, Lithium и CakePHP имат собствен представител с право на глас, а същото важи и за PyroCMS, phpDocumentor и дори Composer.

„Членовете на група с право на глас могат да участват в гласуването, по едно и също време, всекичовек (дори вие!) може да се присъедини към общността на PHP-FIG просто като се абонира за пощенския списък на PHP-FIG.“

Там се провеждат дискусии и гласувания, разглеждат се предложения и се приемат отзиви.

Целта на групата FIG е да създаде дискусия между разработчиците на различни проекти, с цел намиране на общи концепции за по-нататъшна съвместна работа. Към момента на писане има четири обсъждани стандарта за PHP кодиране, от PSR-0 до PSR-3.

Тези стандарти са напълно независими един от друг и разработчикът може да избере да ги следва или не. Всъщност дори самите членове на групата за гласуване не са длъжни да използват тези стандарти в своите проекти!

PSR-0: Стандартно автоматично зареждане

Помните ли, когато трябваше да направите множество оператори за изискване, за да включите всички необходими класове? За щастие, с въвеждането на магическата функция __autoload() в PHP 5, това вече не е необходимо. В PHP 5.1.2. автоматичното зареждане е още по-опростено: благодарение на функцията spl_autoload(), която ви позволява да създавате вериги за автоматично зареждане за редица функции с помощта на spl_autoload_register().

Без значение колко добре работи автоматичното зареждане, то не дефинира ясна рецепта за съвместимост със съществуващите кодови бази. Например библиотека X може да има достъп до директория или структура на клас по различен начин от библиотека Y, но може да искате да използвате и двете.

Писането на отделен (персонализиран) автозареждащ механизъм, който знае откъде да вземе всички пълни имена, от които се нуждае, и проверява за файлови разширения (.class.php, inc.php, .php и т.н.), ще доведе до бъркотия! Без да се спазват стандартите, които определят как да се именуват класове и къде да се съхраняват, и автоматичното зареждане изобщо не е необходимо и няма смисъл.

„Запознайте се с PSR-0 - стандарт,описващ „Задължителни изисквания, които трябва да бъдат изпълнени, за да работи автоматичното зареждане“

PSR-0 е стъпка към възможността за повторно използване на код. Ако проектът е изграден в съответствие със стандартите PSR-0 и неговите компоненти са практически несвързани, можете просто да поставите тези компоненти в каталог и да използвате автоматичното зареждане PSR-0, за да ги свържете към проекта. И ето по-добър вариант - използвайте Composer и той ще го направи вместо вас!

Например Laravel използва два компонента на Symfony (Console и HttpFoundation).

FIG има примерна реализация на PSR-0 функция, съвместима с autoloader, която може да бъде регистрирана с spl_autoload_register(), но можете да използвате други методи, които са удобни за вас, като ClassLoader на Symfony или autoloader на Composer.

PSR-1: Основен стандарт за кодиране.

След приемането на стандартите PSR-0, FIG дълго време не въведе нищо ново. Всъщност PSR-1 и PSR-2 бяха одобрени едва след година и половина.

PSR-1 описва основния стандарт за кодиране. Не е подробно. Беше създаден набор от правила, за да „осигури възможно най-добрата техническа оперативна съвместимост между отделни части от PHP код“.

    Използват се само етикети „Достатъчно е всеки разработчик да сдържи малко амбициите си и ние имаме единен стил на кодиране“

С нарастващия брой членове с право на глас и пускането на четири стандарта, FIG става все по-силен в общността на PHP. Стандартът PSR-0 вече се използва широко. Надяваме се, че PSR-1 и PSR-2 също ще станат популярни и често използвани.

С пускането на PSR-3 FIG въведе нещо ново в стандартите за кодиране. Те продължават да работят в тази посока, т.к. сега в пощенския списък има дискусии на други подобнивъпроси.

В момента има интересна дискусия за пакета HTTP съобщения, за създаване на общи правила и принципи за работа на HTTP клиента. Не толкова активно, но все още има дискусии относно интерфейса на кеша.

Независимо какъв ще бъде резултатът от тези дискусии, PHP-FIG върши чудесна работа по създаването на стандарти за PHP. Несъмнено това има положителен ефект върху повишаването на престижа на езика и се надяваме, че усилията им ще бъдат оценени.

Този урок е подготвен за вас от екипа на ruseller.com Източник на урока: http://net.tutsplus.com/tutorials/php/psr-huh/ Превод: Станислав Протасевич Урокът е създаден: 21 юли 2013 г. Преглеждания: 20406 Правила за препечатване

5 последни урока от рубриката "PHP"

Филтриране на данни с zend-filter

Когато става въпрос за сигурност на уебсайтове, фразата „филтрирай всичко, проверявай всичко“ винаги ще бъде актуална. Днес ще говорим за филтриране на данни.

Контекстуално избягване с zend-escaper

Свързване на Zend модули към Expressive

Expressive 2 поддържа възможността за свързване на други ZF компоненти по специален начин. Не всеки харесва това решение. В тази статия ще ви разкажем как подобрихме процеса на свързване на няколко модула.

Съвет: Подаване на информация към Google Analytics чрез API

Да предположим, че трябва да изпратите някаква информация до Google Analytics от сървърен скрипт. Как да го направим. Отговорът е в тази публикация.

Селекция от PHP пясъчници

Селекция от няколко типа PHP пясъчници. На някои можете да тествате кода си онлайн, но има и решения, които можете да приложите на сайта си.