Laravel 摘要 Class 资料库
Laravel Abstract Class Repository
您好,我正在尝试使用抽象 class 在 laravel 中实现存储库模式,以具有一些我是新手的基本功能。
我正在
Parse error:syntax error, unexpected '->' (T_OBJECT_OPERATOR)
行 AbstractRepository->create($request);
当我从存储库中的抽象调用函数时。这是代码
AbstractRepository.php
<?php
namespace App\Abstracts;
use App\Exceptions\NoResourceFoundException;
use App\Exceptions\ResourceNotFoundException;
abstract class AbstractRepository
{
/**
* @var Model
*/
protected $model;
/**
* @var array
*/
public $errors = [];
/**
* @param Model $model
*/
public function __construct(Model $model)
{
$this->model = $model;
}
public function create(array $data)
{
return $this->model->create($data);
}
}
ReportRepositoryInterface.php
<?php
namespace App\Interfaces;
interface ReportRepositoryInterface {
public function createReport (array $data);
}
?>
ReportRepository.php
<?php
namespace App\Repositories;
use App\Interfaces\ReportRepositoryInterface;
use App\Models\Report;
use App\Services\ApiResponse;
use Illuminate\Http\Request;
use App\Abstracts\AbstractRepository;
class ReportRepository implements ReportRepositoryInterface {
public function createReport(array $request){
AbstractRepository->create($request);
return ApiResponse::responseData($request, 'Record successfully created!');
}
}
?>
ReportsController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Interfaces\ReportRepositoryInterface;
use Illuminate\Support\Facades\Log;
class ReportsController extends Controller
{
public function __construct(ReportRepositoryInterface $report, Request $request)
{
$this->report = $report;
$this->request = $request;
}
public function createReport()
{
$data = $this->request->all();
return $this->report->createReport($data);
}
}
有谁能赐教吗?谢谢
当 class 是 abstract
时,这意味着您不能直接创建 class 的实例,而不是说您可以调用 class 的方法而不用创建 class 的实例,即 static
方法。 abstract
class 意味着要扩展。在这种情况下,您的 ReportRepository
需要修改为:
class ReportRepository extends AbstractRepository implements ReportRepositoryInterface {
public function createReport(array $request){
$this->create($request);
return ApiResponse::responseData($request, 'Record successfully created!');
}
}
查看 abstraction and the manual for static 方法可见性的手册。
您好,我正在尝试使用抽象 class 在 laravel 中实现存储库模式,以具有一些我是新手的基本功能。
我正在
Parse error:syntax error, unexpected '->' (T_OBJECT_OPERATOR)
行 AbstractRepository->create($request); 当我从存储库中的抽象调用函数时。这是代码
AbstractRepository.php
<?php
namespace App\Abstracts;
use App\Exceptions\NoResourceFoundException;
use App\Exceptions\ResourceNotFoundException;
abstract class AbstractRepository
{
/**
* @var Model
*/
protected $model;
/**
* @var array
*/
public $errors = [];
/**
* @param Model $model
*/
public function __construct(Model $model)
{
$this->model = $model;
}
public function create(array $data)
{
return $this->model->create($data);
}
}
ReportRepositoryInterface.php
<?php
namespace App\Interfaces;
interface ReportRepositoryInterface {
public function createReport (array $data);
}
?>
ReportRepository.php
<?php
namespace App\Repositories;
use App\Interfaces\ReportRepositoryInterface;
use App\Models\Report;
use App\Services\ApiResponse;
use Illuminate\Http\Request;
use App\Abstracts\AbstractRepository;
class ReportRepository implements ReportRepositoryInterface {
public function createReport(array $request){
AbstractRepository->create($request);
return ApiResponse::responseData($request, 'Record successfully created!');
}
}
?>
ReportsController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Interfaces\ReportRepositoryInterface;
use Illuminate\Support\Facades\Log;
class ReportsController extends Controller
{
public function __construct(ReportRepositoryInterface $report, Request $request)
{
$this->report = $report;
$this->request = $request;
}
public function createReport()
{
$data = $this->request->all();
return $this->report->createReport($data);
}
}
有谁能赐教吗?谢谢
当 class 是 abstract
时,这意味着您不能直接创建 class 的实例,而不是说您可以调用 class 的方法而不用创建 class 的实例,即 static
方法。 abstract
class 意味着要扩展。在这种情况下,您的 ReportRepository
需要修改为:
class ReportRepository extends AbstractRepository implements ReportRepositoryInterface {
public function createReport(array $request){
$this->create($request);
return ApiResponse::responseData($request, 'Record successfully created!');
}
}
查看 abstraction and the manual for static 方法可见性的手册。