HLEB2 FAQ: Как сократить вызов консольных команд до ./console? Вопрос

05 Июня (ред)

Возможно, что вы видели в других фреймворках как вызываются консольные команды, например в yii2 это может быть как php yii, так и просто ./yii. В инструкции фреймворка HLEB2 указывается только первый способ (php console), но, тем не менее, можно с помощью небольшой правки добавить и второй.

При вызове php console вызывается файл console содержащий php-код. Он инициализирует консольные команды и является для них точкой входа. Аналогично файл public/index.php похожий входной скрипт, но только для веб-сервера. Здесь всё просто.

Чтобы сократить этот вызов, используя второй способ, нужно добавить одну строчку в файл console, до тега "<?php", сделав файл исполняемым:

#!/usr/bin/env php
<?php
...

Это так называемая "шебанг"-строка. Шебанг указывает операционной системе, какой интерпретатор нужно использовать для выполнения скрипта. В данном случае файл будет интерпретирован как PHP-скрипт.

После внесения изменений в файл необходимо назначить ему права на выполнение. Пример для Linux. Выполните следующую команду в терминале (из корневой папки проекта с фреймворком):

   chmod +x console   

Эта команда делает файл console исполняемым. Прежний способ с указанием "php" в начале тоже остается доступным.

Теперь можно вызывать аналогичные команды, но с использованием команды ./console:

./console [args]

Почему же этот файл не содержит такую строку в официальной версии?

Во-первых, сокращение не такое уж и заметное - из одинадцати символов (включая пробел) сокращается до девяти. Во-вторых, при нажатии клавиш в том и другом случае, автору первый способ кажется удобнее, без лишних "знаков препинания", несмотря на то, что на многих клавиатурах кнопки "." и "/" расположены рядом. В-третьих, и это важный технический нюанс, путь к интерпретатору не всегда может быть в системе как "php". Если он не занесён в системные переменные, то исполняемый файл не найдет интерпретатор, его нужно будет указать напрямую, например #!/usr/local/bin/php для Linux. К тому же в Windows нужны дополнительные правки, чтобы файл был исполняемым. Поэтому этот вариант не используется, как усложняющий разработку.

fomiash fomiash + 215
Опубликовано в PHP фреймворк HLEB
К сожалению, ответов пока нет


Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.