作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望能够传入一个实现了 IEntity
接口(interface)的对象,但是我面临着一个
PHP Fatal error: Declaration of ShirtOrderRepository::find(ShirtOrder $shirtOrder) must be compatible with RepositoryInterface::find(IEntity $entity) in /Users/okkamiadmin
/projects/Befeni/index.php on line 52
错误,我不确定我是否以正确的方式做这件事,我该如何实现?
<?php
interface IEntity {
public function getTableName();
}
class ShirtOrder implements IEntity
{
public $id;
public $customerId;
public $fabricId;
public $collarSize;
public $chestSize;
public $waistSize;
public $wristSize;
public function getTableName()
{
return 'shirt_orders';
}
}
interface RepositoryInterface
{
public function find(IEntity $entity);
public function save(IEntity $entity);
public function remove(IEntity $entity);
}
interface DatabaseInterface {
public function find(IEntity $entity);
public function save(IEntity $entity);
public function remove(IEntity $entity);
}
class ShirtOrderRepository implements RepositoryInterface {
protected $db;
public function __construct(DatabaseInterface $db) {
$this->db = $db;
}
public function find(ShirtOrder $shirtOrder)
{
$this->db->find($shirtOrder);
}
public function save(ShirtOrder $shirtOrder)
{
$this->db->save($shirtOrder);
}
public function remove(ShirtOrder $shirtOrder)
{
$this->db->remove($shirtOrder);
}
}
最佳答案
您需要像这样在 ShirtOrderRepository 类中传递 IEntity 而不是 ShirtOrder 的类型:
public function find(IEntity $shirtOrder){
$this->db->find($shirtOrder);
}
您还需要为其余方法执行此操作,因为 RepositoryInterface 需要在其方法参数中传递 IEntity 类型。
关于php - 传入接口(interface)类型作为函数参数抛出 "Delaration must match ...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73171637/
我希望能够传入一个实现了 IEntity 接口(interface)的对象,但是我面临着一个 PHP Fatal error: Declaration of ShirtOrderRepository
我是一名优秀的程序员,十分优秀!