You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP是否存在与Python中__name__ == __main__等价的实现?

PHP中类似Python if __name__ == __main__的等价实现

好问题!我刚好之前也琢磨过这个需求,PHP里确实有对应的实现方式,虽然写法和Python不太一样,但核心逻辑是相通的。

在PHP中,我们可以通过对比__FILE__魔术常量和$_SERVER['SCRIPT_FILENAME']变量来判断当前文件是被直接执行,还是被其他文件include/require进来的。具体逻辑是:

  • __FILE__:返回当前文件的完整路径(通常是绝对路径)
  • $_SERVER['SCRIPT_FILENAME']:返回当前正在执行的脚本的完整路径

当两者相等时,就说明这个文件是用户直接调用运行的,而非作为依赖被引入。

示例代码

// 封装功能的类
class MyToolkit {
    public static function greet() {
        echo "Hello from MyToolkit!\n";
    }
}

// 判断是否直接运行当前文件
if (__FILE__ === $_SERVER['SCRIPT_FILENAME']) {
    // 直接运行时执行的逻辑
    MyToolkit::greet();
    echo "This file is running directly as a script!\n";
}

处理符号链接的情况

如果你的项目中用到了符号链接,可能会出现__FILE__和$_SERVER['SCRIPT_FILENAME']路径不一致的情况,这时候可以用realpath()函数来获取真实路径再对比:

if (realpath(__FILE__) === realpath($_SERVER['SCRIPT_FILENAME'])) {
    // 直接运行时的逻辑
}

这个方法在Web环境和CLI命令行环境下都能正常工作,完美实现你想要的“类封装+直接作为脚本运行”的需求。

内容的提问来源于stack exchange,提问作者Bob Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 07:07:33