这更是对我个人的熏陶比什么都重要,但是,这一点是一直困扰着我:为什么专门不能PHP,而在命令行模式下执行“自动加载”?
我一直在阅读本免责声明多年了,但我从来没读过什么,为什么触动:
http://php.net/manual/en/language.oop5.autoload.php :
注意:如果在命令行交互模式下使用PHP自动加载不可用。
有谁知道什么是防止PHP,作为一种语言,从自动装填在CLI模式下工作时?
这更是对我个人的熏陶比什么都重要,但是,这一点是一直困扰着我:为什么专门不能PHP,而在命令行模式下执行“自动加载”?
我一直在阅读本免责声明多年了,但我从来没读过什么,为什么触动:
http://php.net/manual/en/language.oop5.autoload.php :
注意:如果在命令行交互模式下使用PHP自动加载不可用。
有谁知道什么是防止PHP,作为一种语言,从自动装填在CLI模式下工作时?
在命令行上自动加载工作。 请注意的“互动”的提及。
PHP带有两个交互模式,但不幸的是他们两人是通过使用调用php -a
的命令shell。
如果PHP与readline的支持编译,你得到的“互动空壳”。 在这种模式下,每一个命令几乎是立刻评估,你也可以得到任何解析错误的即时反馈。
在这种模式下,自动加载工作。
另一种模式被称为“交互模式”。 这种模式是无效的任何花哨的东西,它只是发出一个短消息,然后你基本上写一个PHP脚本 - 和什么都做不了,除非你关闭STDIN。 只有这样,在编写的代码被解析并执行。 而这其中的唯一情况__autoload()
函数不叫未知类。
例如,对于一个交互式shell会话(使用PHP 5.3.2在Linux上):
vagrant@lucid32:/etc/apache2$ php -a
Interactive shell
php > function __autoload($classname) {
php { echo "Autoload $classname";
php { eval("class $classname{}");
php { return true;
php { }
php > new Bar();
Autoload ▒▒Bar
php > new FooBar();
Autoload ▒▒FooBar
php > var_dump($a = get_declared_classes());
array(123) {
[0]=>
string(8) "stdClass"
[1]=>
string(9) "Exception"
[2]=>
string(14) "ErrorException"
... lots of internal classes here ...
[121]=>
string(3) "Bar"
[122]=>
string(6) "FooBar"
}
php >
实施例用于交互式模式(使用PHP 5.3.18在Windows上)
PS C:\Users\sven> php -a
Interactive mode enabled
<?php
function __autoload($class) { echo "Auto: $class"; eval("class $class {}"); }
echo "Hello World";
$x = new Foo;
var_dump($x);
var_dump($a = get_declared_classes());
^Z
Hello World
Fatal error: Class 'Foo' not found in - on line 4
Call Stack:
100.6337 1114608 1. {main}() -:0
想想PHP的互动CLI方式基本上是:PHP开始一个空的脚本,并读取从文件PHP://stdin
,它然后解析并执行。 该文件的位置,因此包括路径和其他环境变量被忽略。 目前__FILE__
,如果你不存在。
好吧,这只是一个看它的方式,它不会告诉整个故事(远非如此),但在实践中,这是你能想到的它的方式。 不必有互动CLI,在所有的启动文件:
$ php '<?php echo "this is read from STDIN"; ?>'
由于可以从文档推断 :
ARGS ...参数传递给脚本。 使用 - ARGS时,第一个参数开头 - 或者脚本是从标准输入读取
我会说,他们不是在谈论他们正在谈论PHP交互模式CLI,又名php -a
。
为什么? 因为它只是用于测试目的和短snipplets如果有什么自动加载的行为可能是疯了。
http://www.php.net/manual/en/features.commandline.interactive.php