После прочтения PSR-1 возникли некоторые мысли, о которых хотелось бы поведать сообществу программистов с целью получения рассказов о вашем опыте.
PSR-1: Базовый стандарт написания кода стандарт, которые рекомендует правила оформления и написания кода.Оформление как писать код, анаписание что писать.
Подтекст PSR-1 говорит о том, что не надо использовать смешивание кода и логических заключений кода. Немного не понятно выразился, но далее вы поймете, что PSR-1 не рекомендует писать класс, выводить на экран и заниматься инициализацией свойств в одном файле.
Все PHP файлы должны использовать либо<?php
,
либо<?=
. Тут все очевидно и понятно, первый тег
говорит об объявлении секции php кода, а второй краткая
записьecho
, то есть вывода.
Файлы также должны быть в кодировки UTF-8 без BOM, что вполне логично. Были как-то случае в проекте, где было несколько программистов. Так вот, там один как-то умудрялся вставлять BOM символ и из-за этого парсинг файлов ломался.
Тут же говорится, что не рекомендуется использовать несколько побочных эффектов (side effects). С переводом у меня не всегда все ладно... То есть мы не можем взять и написать в файле:
<?php// side effect: change ini settingsini_set('error_reporting', E_ALL);// side effect: loads a fileinclude "file.php";// side effect: generates outputecho "<html>\n";// declarationfunction foo(){ // function body}
Ну тут момент крайне спорный. Хотя стандарт рекомендует использовать автозагрузчик по своим стандартам PSR-0 и PSR-4. С одной стороны да, но может же быть инициализация приложения в единой точке входа. Короче, момент сомнительный. В том же самом Yii2 не соблюдается этот подход... Я бы не обращал внимания именно на эту рекомендацию.
Переходим в раздел имения классов и пространств имен
(namespace). Тут я согласен, что файл класса должен содержать
только этот класс, что класс должен находится в пространстве имен.
Именование классов должно быть в форматеStudlyCaps
. Мы
не будем рассматривать варианты написания кода для версий PHP <
7.0, так как там есть свои нюансы, а востребованность версий ниже
достаточно мала.
Константы мы именуем в верхнем регистре, разделяя слова нижним
подчеркиваниемDATE_APPROVED
. Тут все логично и
понятно, смысла именовать их похоже на свойства или переменные нет.
Надо четко различать константы от свойств.
А вот с именованием свойств я не согласен с рекомендаций. PSR-1
рекомендует использовать один из
форматов:$StudlyCaps
,$camelCase
,
или$under_score
. Я не очень люблю разношерстность кода
и полагаться на мнение каждого программиста. Лично я, наверное как
и многие программисты, считаю, что использовать надо лишь один
стиль, и он должен быть$camelCase
. Причем стандарт
хитрый, он говорит о том, что эти правила могут идти от поставщиков
кода разного уровня... Вот если бы приняли стандарт именования
конкретно, то не было бы разногласий. Хотя я уже давно не встречал
написания кода в отличном формате отcamelCase
.
С именование методов в форматеcamelCase()
я
полностью согласен и поддерживанию. Логично же, что классы именуем
с большой буквы, константы с маленькой, методы с маленькой. И, в
принципе, можно отличить одно от другого просто по написанию.
Спасибо за внимание, надеюсь, что материал был полезен, хотя и является изложением мыслей о прочтенном PSR-1.