PHP CLI 模式 -f 标志


php CLI mode -f flag

我正在阅读有关 CLI 模式下 PHP 的细节,但我无法自己解释什么实用程序具有 -f 标志。

可以"php name_of_script.php""php -f name_of_script.php"执行任何 php 脚本

我想这个选项只是一种语法糖。它的存在也许可以用这样一个事实来解释,即当用户看到 -f 文件被执行时,它对用户来说更明显。我无法编造任何其他解释。有人看到它的任何其他用法吗?

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>