PSR-1: Базовый стандарт кодирования

Дата публикации: 2023-09-09
Просмотры: 401

PSR (PHP Standards Recommendations) - это набор рекомендаций по программированию на языке PHP.
PSR-1 - это стандартные элементы кодирования, которые необходимы для обеспечения высокого уровня технической совместимости между общим PHP-кодом.

PSR-1: Базовый стандарт кодирования

1. Общие положения

  • В файлах НЕОБХОДИМО использовать только теги <?php и <?=.
  • Файлы НЕОБХОДИМО представлять только в кодировке UTF-8 без BOM-байта.
  • В файлах СЛЕДУЕТ либо объявлять структуры (классы, функции, константы и т.п.), либо генерировать побочные эффекты (выполнять действия) (например: передавать данные в выходной поток, модифицировать настройки и т.п.), но НЕ СЛЕДУЕТ делать одновременно и то, и другое.
  • Имена пространств имён и имена классов ДОЛЖНЫ следовать стандарту автозагрузки PSR-0, PSR-4.
  • Имена классов ДОЛЖНЫ быть объявлены с использованием т.н. StudlyCaps (каждое слово начинается с большой буквы, между словами нет разделителей).
  • Константы классов ДОЛЖНЫ быть объявлены исключительно в верхнем регистре с использованием символа подчёркивания для разделения слов.
  • Имена методов ДОЛЖНЫ быть объявлены с использованием т.н. camelCase (первое слово пишется в нижнем регистре, далее каждое слово начинается с большой буквы, а между словами нет разделителей).

2. Файлы

2.1. PHP-теги

Код PHP ДОЛЖЕН использовать длинные <?php ?> теги или укороченные теги <?= ?>
Он НЕ ДОЛЖЕН использовать другие варианты тегов.

2.2. Кодировка символов

Код PHP ДОЛЖЕН использовать только UTF-8 без спецификации.

2.3. Побочные эффекты

Файл ДОЛЖЕН объявлять новые символы (классы, функции, константы и т. д.) и не вызывать никаких других побочных эффектов, или он ДОЛЖЕН выполнять логику с побочными эффектами, но НЕ ДОЛЖЕН делать и то, и другое.

Фраза побочные эффекты означает выполнение логики, не связанной напрямую с объявлением классов, функций, констант и т.д., просто за счет включения файла.

Побочные эффекты включают, помимо прочего: генерацию вывода, явное использование require или include, подключение к внешним службам, изменение настроек ini, выдачу ошибок или исключений, изменение глобальных или статических переменных, чтение или запись в файл и т.д.

Ниже приведен пример файла с объявлениями и побочными эффектами; т.е. пример того, чего следует избегать:

<?php
// побочный эффект: изменение настроек
ini_set('error_reporting', E_ALL);

// побочный эффект: подключение файла
include "file.php";

// побочный эффект: передача данных в выходной поток
echo "\n";

// объявление
function foo()
{
    // тело функции
}

В следующем примере показан файл, содержащий объявления без побочных эффектов; т.е. пример того, что подражать:

<?php
// объявление
function foo()
{
    // тело функции
}

// условное объявление -- это НЕ побочный эффект
if (!function_exists('bar')) {
    function bar()
    {
        // тело функции
    }
}

3. Имена пространств имён и имена классов

Пространства имен и классы ДОЛЖНЫ следовать PSR автозагрузки: PSR-0, PSR-4.

Это означает, что каждый класс находится в отдельном файле и находится в пространстве имен как минимум одного уровня: имени поставщика верхнего уровня.

Имена классов ДОЛЖНЫ быть объявлены в формате StudlyCaps.

Код, написанный для PHP 5.3 и более поздних версий, ДОЛЖЕН использовать формальные пространства имен.

Например:

<?php
// PHP 5.3 и новее:
namespace Vendor\Model;

class Foo
{
}

Код, написанный для версии 5.2.x и более ранних версий, ДОЛЖЕН использовать соглашение о псевдо-пространстве имен для Vendor_префиксов в именах классов.

<?php
// PHP 5.2.x и ранее:
class Vendor_Model_Foo
{
}

4. Константы классов, свойства и методы

Термин «класс» относится ко всем классам, интерфейсам и характеристикам.

4.1. Константы

Константы класса ДОЛЖНЫ быть объявлены в верхнем регистре с разделителями-подчеркиваниями. Например:

<?php
namespace Vendor\Model;

class Foo
{
    const VERSION = '1.0';
    const DATE_APPROVED = '2012-06-01';
}

4.2. Свойства

В этом руководстве намеренно избегаются любые рекомендации по использованию $StudlyCaps, $camelCase или $under_score имен свойств.

Какое бы соглашение об именовании ни использовалось, СЛЕДУЕТ применять последовательно в разумных пределах. Эта область может быть на уровне поставщика, уровне пакета, уровне класса или уровне метода.

4.3. Методы

Имена методов ДОЛЖНЫ быть объявлены в формате camelCase().


Ссылка на источник: https://www.php-fig.org/psr/psr-1/

Поделиться статьей:

Комментарии:

Авторизуйтесь, для того, чтобы оставить комментарий. Войти на сайт
Подписка на новости
Узнавайте о новых статьях первыми.
Профиль