リフレクションを使用してオブジェクトを作成しようとすると、このエラーを回避できず、毎回このエラーが発生します。
これが私のコードです:
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);
}