我正尝试在Zend Expressive APP中创建一个类(作为工厂类工作),如下所示:
declare(strict_types=1);
namespace App\Install\Factory;
use App\Install\Model as Models;
use App\Install\Abstracts\AttributeInterface;
class AttributeEntityFactory{
public static function create($type1 ='Attribute') : AttributeInterface
{
$resolvedClass = "Models\\$type1";
$resolvedClass1 = 'Models\\'.$type1;
//return new $resolvedClass();
//return new $resolvedClass1();
return new Models\Attribute();
}
}
上面的代码非常适合我。但是,如果尝试使用其他两个return语句中的任何一个,则会显示
找不到类'Models \ Attribute'
如何实现动态实例化?
属性类代码如下:
namespace App\Install\Model;
use App\Install\Abstracts\AttributeInterface;
class Attribute implements AttributeInterface
{
protected $attribute;
public function setAttribute($attribute)
{
$this->attribute = $attribute;
}
public function getAttribute()
{
return $this->attribute;
}
}
我的PHP版本是:
PHP 7.2.13(cli)(内置:2018年12月14日04:20:16)(NTS)
答案 0 :(得分:0)
您可能需要传递完整的名称空间?
"App\Install\Model\" . $type1;
更多...
您拥有的模型属性位于名称空间App\Install\Model
中,而您尝试创建的对象来自Models\\ . $type1
也许您需要将Models
更改为Model