通过在 Laravel 中称为服务的另一层访问存储库模式
Accessing repository pattern through one more layer called service in Laravel
我在我的项目中创建了一个存储库层,可以通过使用接口的控制器方法完全访问它。现在我要添加的是一个服务层。这意味着我希望所有控制器方法操作都将通过服务完成。因此,我在服务文件夹中创建了一个文件,并尝试通过服务访问存储库功能。
我装了一个
存储库访问的构造函数..但我收到错误
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
当您访问 class 个变量时,您需要执行 $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
?)
我在我的项目中创建了一个存储库层,可以通过使用接口的控制器方法完全访问它。现在我要添加的是一个服务层。这意味着我希望所有控制器方法操作都将通过服务完成。因此,我在服务文件夹中创建了一个文件,并尝试通过服务访问存储库功能。
我装了一个
存储库访问的构造函数..但我收到错误
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
当您访问 class 个变量时,您需要执行 $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
?)