Config\Services
是一个类,用来减少在单例上的大量代码开发。不幸的是,我犯了一个错误。
当从getShared获取存储库外观时,
Services::repositoryFacade(Services::userRepository(), TRUE);
代码将失败并显示:
Config\Services::repositoryFacade(): Return value must be of type App\Domain\Core\IRepositoryFacade, null returned
以下代码已在app/Config/Service.php
中设置
public static function repositoryFacade(IRepository $repository, bool $getShared = false): IRepositoryFacade{
if ($getShared) {
return self::getSharedInstance('resourceFacade');
}
return new RepositoryFacade($repository);
}
public static function userRepository(bool $getShared = true): IRepository
{
if ($getShared) {
return self::getSharedInstance('userRepository');
}
return new UserRepository(model(UserModel::class));
}
RepositoryFacade
位于基础结构层,为IRepository
域接口一一服务,而UserRepository
是基础结构层的一个具体类,它的职责是让RepositoryFacade
执行ORM,与域层没有任何接触。
getShared是不是一点用处都没有?当TRUE
值被删除时不会出现错误。
Services::repositoryFacade(Services::userRepository());
1条答案
按热度按时间nvbavucw1#
这行代码在逻辑上是不正确的。
将其更改为下面的工作完美。
这样就可以使多个
RepositoryFacade
类示例为Repository示例服务,如UserRepository
、ProductRepository
,从而我们不需要得到相同的RepositoryFacade示例。UserRepository应该始终保持不变。因此,我们可以通过以下方式获取UserRepository的相同示例:
如果需要多次使用带有UserRepository的外观,只需