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

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


freelanceland
Работа для фрилансеров

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

К дополнении этого стандарта следует применять PSR-2.

1. Обзор

  • Файлы должны использовать только <?php и <?=тег.

  • Файлы ДОЛЖНЫ использовать только UTF-8 без спецификации для кода PHP.

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

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

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

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

2. Файлы

2.1. Теги PHP

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

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

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

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

В файле/функции/классе не должно находиться логики, не связанной напрямую с текущим элементом.

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

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

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

<?php
// side effect: change ini settings
ini_set('error_reporting', E_ALL);

// side effect: loads a file
include "file.php";

// side effect: generates output
echo "<html>\n";

// declaration
function foo()
{
    // function body
}

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

<?php
// declaration
function foo()
{
    // function body
}

// conditional declaration is *not* a side effect
if (! function_exists('bar')) {
    function bar()
    {
        // function body
    }
}

3. Пространство имен и имена классов

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

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

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

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

Например:

<?php
// PHP 5.3 and later:
namespace Vendor\Model;

class Foo
{
}

В коде, написанном для 5.2.x и ранее, СЛЕДУЕТ использовать соглашение Vendor_о псевдонимах префиксов в именах классов.

<?php
// PHP 5.2.x and earlier:
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().

Также читают

PSR-7: интерфейсы сообщений HTTP
PSR-4: Автозагрузчик
PSR-2: Руководство по стилю кодирования

Возврат к списку