在PHP中抛出类错误

时间:2014-05-29 06:57:35

标签: php reflection

我不知道为什么这个代码会引发错误,请帮忙吗?

foreach ($config['commands'] as $commandName => $args) {
    $reflector = new ReflectionClass($commandName);

    $command = $reflector->newInstanceArgs($args);

    $bot->addCommand($command);
}

错误:

致命错误:未捕获的异常' ReflectionException' with message' Class Command \ Resolve没有构造函数,所以你不能传递任何构造函数参数'

1 个答案:

答案 0 :(得分:2)

我认为错误信息非常清楚。 The documentation也说基本相同:

  

[引发] ReflectionException如果类没有构造函数且args参数包含一个或多个参数。

您尝试实例化的课程没有构造函数,但您尝试将其实例化,就好像它有一个并且正在传递它一样参数。不应传递$args,或者它应该是一个空数组。您需要使$args适合构造函数,目前它们不匹配。

namespace Command;

class Resolve {

    // Look ma, NO CONSTRUCTOR!

}

$reflector = new \ReflectionClass('Command\Resolve');
$command = $reflector->newInstanceArgs(['foo', 'bar', 'baz']);
// doesn't match the non-existent constructor ^^^^^^^^