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

spl_autoload_register无输出,如何通过它获取PHP类名?

问题原因

你的代码里spl_autoload_register的回调没触发,是因为自动加载机制仅在PHP尝试使用未定义的类时才会启动。你在实例化CreateRating之前,已经在当前文件里定义了这个类,所以PHP不需要去自动加载它,回调函数自然不会执行,也就没有任何输出。

正确的自动加载用法示例

如果要让自动加载生效,需要把类定义放到单独的文件中,比如:

  1. 创建CreateRating.php文件,内容如下:
<?php
class CreateRating
{
  public function test()
  {
    return 'Test';
  }
}
  1. 在主文件中使用自动加载:
<?php
spl_autoload_register(function ($className) {
  echo "自动加载类:{$className}\n";
  // 根据类名引入对应的文件
  require_once "{$className}.php";
});

// 此时CreateRating类未在当前文件定义,PHP会触发自动加载
$test = new CreateRating();
echo $test->test();

运行这段代码,你会看到回调函数输出类名,同时成功实例化类并调用方法。

如果要获取已定义类的名称

如果你的需求只是获取已实例化对象的类名,不需要用自动加载,直接用get_class()函数即可:

<?php
class CreateRating
{
  public function test()
  {
    return 'Test';
  }
}

$test = new CreateRating();
echo get_class($test); // 输出:CreateRating

内容的提问来源于stack exchange,提问作者Marcelo Raineri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:03:12