Продолжение. Начало смотри в статье «PSR-0. Стандарт автозагрузки»
Этот раздел стандартов включает в себя стандарт кодирования, необходимый для обеспечения высокого уровеня функциональной совместимости между общим PHP кодом.
Ключевые слова «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ТРЕБУЕТСЯ», «БУДЕТ», «НЕ БУДЕТ», «СЛЕДУЕТ», «НЕ СЛЕДУЕТ», «РЕКОМЕНДУЕТСЯ», «МОЖЕТ», и «ОПЦИОНАЛЬНО» в этом документе должны быть истолкованы как описано в RFC 2119.
Файлы ДОЛЖНЫ использовать только <?php
и <?=
теги.
Файлы ДОЛЖНЫ использовать только UTF-8 без BOM для PHP кода.
Файлам СЛЕДУЕТ либо объявлять знаки (классы, функции, константы, и т.д.) либо оказывать побочный эффект (например, генерировать вывод, изменять .ini настройки, и т.д.) но НЕ СЛЕДУЕТ делать и то и другое.
Пространства имен и классы ДОЛЖНЫ следовать PSR-0.
Имена классов ДОЛЖНЫ быть объявлены используя StudlyCaps
.
Константы класса ДОЛЖНЫ быть объявлены в верхнем регистре с подчеркиванием в качестве разделителей.
Имена методов ДОЛЖНЫ быть объявлены используя camelCase
.
PHP код ДОЛЖЕН использовать длинные <?php ?>
теги или сокращённый echo-тэг <?= ?>
теги; другие варианты тегов НЕ ДОЛЖНЫ использоваться.
PHP код ДОЛЖЕН использовать только UTF-8 без BOM.
Файлу СЛЕДУЕТ объявлять новые сущности (классы, функции, константы, и т.д.), и не вызывать побочные эффекты, или ему СЛЕДУЕТ выполнять логику с побочным эффектом, но НЕ СЛЕДУЕТ делать и то и другое.
Фраза «побочные эффекты» означает выполнение логики непосредственно не связанной с объявлением классов, функций, констант и так далее. То есть при подключении такого файла производятся некоторые действия, а не только обяъвление новых классов и функций.
«Побочные эффекты« включают, но не ограничиваются следующими действиями: генерация вывода, явное использование 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()
{
// тело функции
}
}
Пространства имен и классы ДОЛЖНЫ следовать PSR-0.
Это означает, что каждый класс находится в собственном файле, и в пространстве имен состоящем, по крайней мере, из одного уровня — имени разработчика.
Имена классов ДОЛЖНЫ быть объявлены используя StudlyCaps
.
Код написанный на PHP 5.3 и старше ДОЛЖЕН использовать пространства имен.
Например:
<?php
// PHP 5.3 и старше:
namespace Vendor\Model;
class Foo
{
}
Термин "класс" относится ко всем классам, интерфейсам и трейтам.
Константы класса ДОЛЖНЫ быть объявлены в верхнем регистре с использованием подчеркиваний в качестве разделителей. Например:
<?php
namespace Vendor\Model;
class Foo
{
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
}
Это руководство намеренно избегает любых рекомендаций, касающихся использования $StudlyCaps
, $camelCase
, или $under_score
для имен свойств.
Независимо от соглашения именования его СЛЕДУЕТ применять последовательно в разумных пределах. Этот предел может быть на уровне поставщика, на уровне пакета, на уровне класса, или уровне метода.
Имена методов ДОЛЖНЫ быть объявлены используя camelCase
.
Источники:
comments powered by Disqus