我想创建一个CRUDable(可以保存和删除)实体的界面。这里是我的抽象类:PHP:“...的声明应该与...兼容”
abstract class AbstractCrudableEntity extends AbstractEntity
{
abstract public function doSave();
abstract public function doDelete();
}
我的实现类需要一些额外的参数给这些方法。下面是实现类的签名:
class Contact extends AbstractCrudableEntity {
public function doSave(User $user, \UberClientManager $manager);
public function doDelete(User $user, \UberClientManager $manager);
}
据我所知,PHP需要实现类有方法作为父类相同的参数(有一些回答这个问题,几个问题:this,例如) 。所以这不是问题。
但是,我最近在Symfony中遇到了一些处理认证令牌的代码。类UsernamePasswordToken
延伸AbstractToken
,并在__construct()
方法中具有不同的一组参数:AbstractToken::__construct()
与UsernamePasswordToken::__construct()
。
我的问题是Symfony如何做到这一点?这和我的代码有什么区别?
哇,我不知道为什么构造函数是一个特例。看起来他们认识到这个功能是有用的,但由于某种原因,它仅限于构造函数。 – theunraveler
[欢迎来到美丽的PHP世界](http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/)。 ;) –
呃,有人在PHP问题中发布该链接只是时间问题。 – theunraveler