Рекомендованные стандарты PHP

Разрабатываемые с 2010 года командой PHP-FIG cтандарты ставят своей целью обеспечение совместимости компонентов и создание технической основы для реализации проверенных концепций программирования и тестирования.

К списку стандартов

Что такое PSR?

PSR (PHP Standards Recommendations) — это набор рекомендаций по разработке веб-приложений на языке PHP.
PSR начали разрабатываться с 2009 года и в 2010 году появились первые рекомендации. Разработкой занимается PHP-FIG - независимая экспертная группа программистов, авторов таких PHP-проектов, как Yii, Slim, ReactPHP, Composer, Laminas, Joomla, Magento и других. Узнать больше о группе можно на официальном сайте PHP-FIG

Зачем нужны PSR?

Следование рекомендованным стандартам делает код единообразным, упрощает совместную работу над проектом и доработку чужого кода, поддерживает совместимость между PHP-проектами, упрощает тестирование, повышает надежность и безопасность проектов.

Должен ли я следовать PSR?

В PSR есть слово «стандарт», но пока это список рекомендаций. Следовать им или нет — ваше личное решение. Вы можете писать код, используя свой стиль и технические решения. Но фактически эти рекомендации являются констатацией лучших практик, выработанных в ходе разработки огромного количества веб-приложений, а также это отличный способ организации совместной работы над крупными проектами.

PSR охватывают различные аспекты разработки веб-приложения и поделены на 4 части. Каждый стандарт содержит информацию о том, как нужно выполнять задачи. Например, ставить переносы строк, называть переменные, реализовывать автозагрузку. За каждый аспект отвечает свой стандарт. У каждого стандарта есть свой номер, например, PSR-1 или PSR-4.

Автозагрузка

Автозагрузчики упрощают подключение файлов, сопоставляя пространства имен с путями файловой системы.

                                <?php

use Vendor\Package\ClassName;

$object = new ClassName();
                                
                            

Интерфейсы

Интерфейсы упрощают совместное использование кода проектов, следуя общепринятым контрактам.

                                <?php

namespace Psr\Log;

/**
 * Describes a logger instance
 */
interface LoggerInterface
{

                            

Http

Совместимые стандарты и интерфейсы для независимого подхода к обработке HTTP-запросов и ответов как на стороне клиента, так и на стороне сервера.

                                <?php

namespace Psr\Http\Message;

/**
 * Representation of an outgoing, client-side request.
 */
interface RequestInterface extends MessageInterface
{

                            

Стиль кодирования

Стандартизированное форматирование уменьшает когнитивное сопротивление при чтении кода других авторов.

                                <?php

namespace Vendor\Package;

class ClassName
{
    public function fooBarBaz($arg1, &$arg2, $arg3 = [])
    {
        // method body
    }
}