PSR-1. Основной стандарт написания кода

Продолжение. Начало смотри в статье «PSR-0. Стандарт автозагрузки»

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

Ключевые слова «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ТРЕБУЕТСЯ», «БУДЕТ», «НЕ БУДЕТ», «СЛЕДУЕТ», «НЕ СЛЕДУЕТ», «РЕКОМЕНДУЕТСЯ», «МОЖЕТ», и «ОПЦИОНАЛЬНО» в этом документе должны быть истолкованы как описано в RFC 2119.

1. Обзор

2. Файлы

2.1. PHP Теги

PHP код ДОЛЖЕН использовать длинные <?php ?> теги или сокращённый echo-тэг <?= ?> теги; другие варианты тегов НЕ ДОЛЖНЫ использоваться.

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

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

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

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

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

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

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

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

// побочный эффект: загрузка файла
include "file.php";

// побочный эффект: вывод результата
echo "<html>\n";

// описание
function foo()
{
    // тело функции
}

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

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

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

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

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

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

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

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

Например:

<?php
// PHP 5.3 и старше:
namespace Vendor\Model;

class 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.

Источники:

К списку сообщений

comments powered by Disqus