PHP ReflectionClass -致命错误:类名必须是一个有效的对象或字符串



当我试图使用反射创建对象并每次都得到此错误时,我似乎无法绕过此错误。

下面是我的代码:

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();
}

第一个回显打印"domainMember"。这是正确的,因为它是我传入的,它是我试图创建对象的类。

接下来,回显打印"YES"。这个类存在!

接下来,我将$ class传递给ReflectionClass和…

下一个print_r打印:

ReflectionClass Object ( [name] => domainMember )

注意 before域消失了。可能是问题的一部分吗?

然后,当我调用newInstance()时,我得到了错误。

致命错误:类名必须是C:UsersZackPhpstormProjectsMyAppbaseRegistry.php中的有效对象或字符串

所以我不知道问题是什么。Member类存在于域命名空间中。以防万一,在Member中有什么是错误的,在这里;还没有:

<?php
namespace domain;
use baseRegistry;
use domainbaseBaseMember;
class Member extends BaseMember {
/**
 * @param $displayName
 * @return Member
 */
public static function findMemberByDisplayName($displayName) {
    return Registry::memberRepository()->findMemberByDisplayName($displayName);
}

最后一行不需要new。它应该是这样的:

return $mapperClass->newInstance();

实际发生的是,你得到Member的一个实例,然后把这个实例作为类名传递给new。所以PHP看到return new {instance of Member},它抱怨对象的实例不是一个有效的类名

相关内容

  • 没有找到相关文章

最新更新