我在我的项目中创建了一个存储库层,可以通过使用接口的控制器方法完全访问。现在我要添加的是一个服务层。这意味着我希望所有控制器方法操作都将通过该服务完成。所以我在服务文件夹中创建了一个文件,并尝试通过服务访问存储库功能。
我在那里装了一个
存储库访问的构造函数..但我收到错误
public function __construct(IFamilyRepository $familyRepository){
$this->$familyRepository = $familyRepository; // getting error on this line
}
public function testRepository(){
$this->$familyRepository->getAllGrandfather();
return "null";
}
我收到错误:
ErrorException in FamilyService.php line 19:
Object of class App\Repositories\Eloquent\FamilyRepository could not be converted to string
in FamilyService.php line 19
at HandleExceptions->handleError('4096', 'Object of class App\Repositories\Eloquent\FamilyRepository could not be converted to string', 'D:\files\xampp\htdocs\laravel\dolovers-project-nayeb-moshai\app\Services\FamilyService.php', '19', array('familyRepository' => object(FamilyRepository))) in FamilyService.php line 19
at FamilyService->__construct(object(FamilyRepository))
at ReflectionClass->newInstanceArgs(array(object(FamilyRepository))) in Container.php line 817
at Container->build('App\Services\FamilyService', array()) in Container.php line 656
答案 0 :(得分:2)
访问类变量时,您需要执行$this->some_var
,而不是$this->$some_var
。在后一种情况下,PHP认为你正在尝试使用$some_var
的字符串值,但它不能 - 这就是为什么它抱怨无法转换为字符串。
假设您的其他代码正确无误,只需更改即可立即使用。
public function __construct(IFamilyRepository $familyRepository){
$this->familyRepository = $familyRepository;
}
public function testRepository(){
$this->familyRepository->getAllGrandfather();
return "null";
}
(另外,作为旁边 - 你知道这比我更好 - 应该是IFamilyRepository
,而不是FamilyRepository
吗?)