嗨,我正在尝试使用抽象类在 laravel 中实现存储库模式,以拥有一些我新手的基本功能。
我正在得到
分析错误:语法错误,意外'-
在AbstractRepository一行-
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);
}
}
有谁能开导一下吗?谢谢
当一个类是抽象
时,这意味着您不能直接创建该类的实例,而不是您可以在不创建该类实例的情况下调用该类的方法,这将是静态
方法。抽象
类旨在扩展。在这种情况下,您的ReportRepostory
需要修改为:
class ReportRepository extends AbstractRepository implements ReportRepositoryInterface {
public function createReport(array $request){
$this->create($request);
return ApiResponse::responseData($request, 'Record successfully created!');
}
}
看一看抽象手册和静态方法可见性手册。
我学会了通过存储基类指针将派生类指针存储在基类向量中: 但是如果我有一个抽象基类: 从中派生出另外两个抽象类。 以及来自二级抽象类的其他几个派生类: 是否有可能将它们全部存储在多态性载体中?和往常一样,我做了以下工作: 但是如何将两个多态向量存储在基类向量中呢?
问题内容: 我知道spring数据存储库的实现: 创建一个像这样的接口: 现在是一个,我的项目中有(很多)更多目录。 我想知道是否可以制作1个适用于所有目录的存储库: 现在,有了保存,我不会直接看到问题,但是如果我要搜索一个,AbstractCatalog我已经确定我会碰壁的,因为回购协议将不知道他必须选择哪种对象。 AbstractCatalog.class Country.class 有谁知道
我想读关于抽象的文章,但读到不同的文章,我感到很困惑。 下面是我无法理解的问题: 1)“抽象是通过使用抽象类和接口实现的吗?”我对此进行了搜索,得到了三种类型的答案: 与此处解释的不同。 它们是相同的,只是不同的观点,就像这里解释的。 最后一个是抽象类用来实现抽象。 哪一个是真的?请举一个简单的例子。 2)“抽象意味着隐藏不必要的细节。比如专注于一个对象做什么而不是它是如何完成的。” 这是正确的吗
Java 语言提供了两种类,分别为具体类和抽象类。前面学习接触的类都是具体类。这一节介绍一下抽象类。 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,那么这样的类称为 抽象类。 在 Java 中抽象类的语法格式如下: 其中,abstract 表示该类或该方法是抽象的;class_name 表示抽象类
本文向大家介绍PHP 抽象类,包括了PHP 抽象类的使用技巧和注意事项,需要的朋友参考一下 示例 抽象类是无法实例化的类。抽象类可以定义抽象方法,这些方法没有任何主体,只有一个定义: 应该通过子类扩展抽象类,然后可以提供这些抽象方法的实现。 这样的类的主要目的是提供一种模板,该模板允许子类继承,“强制”遵循的结构。让我们用一个例子来详细说明一下: 在此示例中,我们将实现一个Worker接口。首先我
本小节我们将学习 Java 中的抽象类,你将了解到抽象类的概念和特点,抽象类在程序设计时的应用场景,什么是抽象方法,抽象方法有什么特点,如何声明一个抽象方法等内容。 1. 概念和特点 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 值得注意的是,一个抽象类不能直接实例化,但类的