интерфейс командной строки — php CLI mode -f flag

Я читал о специфике PHP в режиме CLI и не могу объяснить для себя, какая утилита имеет флаг -f.

Можно выполнить любой скрипт PHP как "php name_of_script.php" или же "php -f name_of_script.php"

Я предполагаю, что этот вариант — просто своего рода синтаксический сахар. Также его существование может быть объяснено тем фактом, что для пользователя это более очевидно, когда он видит, что этот файл выполняется. Я не могу придумать никаких других объяснений. Кто-нибудь видит другое использование этого?

1

Решение

У PHP очень долгая история с множеством дизайнерских решений, потерянных в глубине веков; Я не уверен, что кто-нибудь сможет рассказать вам определенный почему есть и -f возможность и возможность запуска файла без каких-либо параметров вообще.

Тем не менее, это, кажется, разработано для удобства пользователя; большинство пользователей командной строки ожидают, что интерпретатор интерпретирует имя файла, представленное как один параметр, и это наиболее распространенный вариант использования, поэтому имеет смысл сделать его наиболее быстрым для ввода. Я думаю, что PHP CLI начался с просто -f опция, и опция для запуска файла, предоставляя только имя файла, была добавлена ​​позже, чтобы облегчить жизнь людям. -f был сохранен для обратной совместимости.

я Можно вспомните один случай, когда -f опция полезна: если имя файла начинается с дефиса, например -.php,

Когда предоставлено как единственный параметр, это будет обработано как опция, и терпит неудачу:

$ php -.php

Usage: php [options] [-f] <file> [--] [args...]
php [options] -r <code> [--] [args...]
php [options] [-B <begin_code>] -R <code
...

Однако с -fсработает

$ php -f -.php
<script executes successfully>
2

Другие решения

Других решений пока нет …