当我尝试使用反射创建对象并每次都出现此错误时,我似乎无法解决此错误。
这是我的代码:
public static function getMapper($klass) {
echo $klass;
if(class_exists($klass)) {
echo "YES!";
} else {
echo "NO!";
}
$mapperClass = new \ReflectionClass($klass);
print_r($mapperClass);
return new $mapperClass->newInstance();
}
第一个回显打印“\domain\Member”。这是正确的,因为它是我传入的,也是我试图创建对象的类。
接下来,回显打印“YES”。班级存在!
接下来,我将 $klass 传递给 ReflectionClass 并...
下一个 print_r 打印:
ReflectionClass Object ( [name] => domain\Member )
请注意域消失之前的 \。可能是问题的一部分吗?
然后,当我调用 newInstance() 时,我得到了错误。
致命错误:类名必须是第 53 行 C:\Users\Zack\PhpstormProjects\MyApp\base\Registry.php 中的有效对象或字符串
所以我不知道问题是什么。Member 类存在于域命名空间中。以防万一会员中的某些地方有问题,在这里;还不算多:
<?php
namespace domain;
use base\Registry;
use domain\base\BaseMember;
class Member extends BaseMember {
/**
* @param $displayName
* @return Member
*/
public static function findMemberByDisplayName($displayName) {
return Registry::memberRepository()->findMemberByDisplayName($displayName);
}