Appearance
Линтеры
Линтеры необходимы для соблюдения код стайла и автоматического форматирования кода.
Для этих нужд используется линтеры Codesniffer и php-fixer
Codesniffer
Codesniffer работает в IDE PhpStorm и подсвечивает ошибочные конструкции.
Установка
- Установить утилиту
json
"require-dev": {
"squizlabs/php_codesniffer": "3.*"
}- В настройках PhpStorm указать путь до исполняемого файла
Сохранить и закрыть окно настроек (иначе нельзя будет выбрать кастомные правила)
- Указать кастомные правила анализа
backend/local/modules/realweb.api/lib/Model/Phpcs/ruleset.xml
Правила линтера
Правила код стайла runway основаны на PSR12, но имеют ряд особенностей.
В частности добавлены следующие проверки:
- Проверка на название свойств класса
- Проверка на название переменных
- Проверка на использование объявленной переменной
- Проверка на название метода класса
- Проверка на объявление возвращаемого типа
php-fixer
Позволяет автоматически форматировать код согласно код стайлу
Установка
- В корне проекта разместить файл php-cs-fixer.dist.php
- Установить утилиту
json
"require-dev": {
"friendsofphp/php-cs-fixer": "dev-master"
}- В настройках PhpStorm указать путь до исполняемого файла

- Указать кастомные правила анализа

Запуск по нажатию быстрых клавиш
Для того чтобы запускать автоматическое форматирование по нажатию быстрых клавиш, необходимо добавить "внешний инструмент" В качестве настроек указываем
Program: $Sourcepath$/backend/local/vendor/bin/php-cs-fixer
Arguments: fix --allow-risky=yes
Working directory: $Sourcepath$
И повесить на эту "программу" удобное сочетание клавиш

$Sourcepath$
Для опредления переменной $Sourcepath$ необходимо указать ее в настройках директорий проекта 
Другой $Sourcepath$
В случае необходимости определения другого source path на проекте путь к программе и рабочей директории изменяются
Program: $Sourcepath$/../../../../local/vendor/bin/cs-fixer
Arguments: fix --allow-risky=yes
Working directory: $Sourcepath$/../../../../Для работы программы с использованием переменной $Sourcepath$ - $Sourcepath$ должна быть единственной.
PhpStorm linter Namespace error
После установки директории backend (Или любой другой) в качестве Source директории проекта PhpStorm начнет ругаться на неправильное именование Namespace
PhpStorm linter error
Namespace name doesn't match the PSR-0/PSR-4 project structure

Для того, чтобы убрать ошибку необходимо добавить директорию local/modules/realweb.api.module/lib (или ту, где возникает ошибка) в качестве Source и указать префикс для Namespace \Realweb\Api\Module

php8.3
После установки php8.3 линтер начнет отдавать ошибку
text
PHP needs to be a minimum version of PHP 7.4.0 and maximum version of PHP 8.2.*.
Current PHP version: 8.3.2-1+ubuntu22.04.1+deb.sury.org+1.
To ignore this requirement please set `PHP_CS_FIXER_IGNORE_ENV`.
If you use PHP version higher than supported, you may experience code modified in a wrong way.
Please report such cases at https://github.com/PHP-CS-Fixer/PHP-CS-Fixer .Для обхода этой ошибки размещаем в директории $ProjectFileDir$/backend/local/vendor/bin/ исполняемый файл с названием cs-fixer с содержанием:
shell
#!/usr/bin/env php
<?php
putenv('PHP_CS_FIXER_IGNORE_ENV=1');
include __DIR__ . '/php-cs-fixer';Теперь можно запускать этот файл вместо php-cs-fixer.