与标题相符,是否有 PHP 等效于 __name__ == "__main__"
的功能?
是否有适用于通过命令行和 Web 请求执行的脚本的内容,或者需要自定义函数?
对于不熟悉 Python 的人,__name__ == "__main__"
可以让您定义模块文件,并且在作为入口点运行时还可以运行一些东西。在 PHP 中,等效结构类似于此:
// SomeClass.php
<?php
class SomeClass
{
function doStuff() {
echo "wahey!\n";
}
}
// python, I know.
if (__name__ == "__main__") {
$sc = new SomeClass;
$sc->doStuff();
}
?>
// OtherClass.php
<?php
require_once("SomeClass.php");
class OtherClass
{
public $yep;
}
?>
// command line:
php SomeClass.php // outputs "wahey!"
php OtherClass.php // outputs nothing
注意: zerkms的回答 是最佳方案,但是它并不完全正确 - 它应该修改为:
if (!debug_backtrace()) {
// do useful stuff
}
这比 !count(debug_backtrace()) 快得多,而该方法本身比我涉及 realpath() 的解决方案快两倍左右。