CRUDable (保存および削除可能) なエンティティのインターフェイスを作成したいと考えています。ここに私の抽象クラスがあります:
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 がこれをどのように行うことができるかということです。これと私のコードの違いは何ですか?