そのようなコード:
interface entite
{
}
class Foo implements entite
{
}
$foo = new foo;
if( $foo instanceof entite ) echo "he is";
「彼は」を表示します。Fooはインターフェースから「entite」タイプを継承しますが、それを試してみると:
class FooDeleter implements deleter
{
public function __construct(Foo $Foo)
{
}
}
interface deleter
{
public function __construct(entite $entite);
}
私に与える:
Fatal error: Declaration of FooDeleter::__construct() must be compatible with deleter::__construct(entite $entite)
なんで ?方法 ?=(
編集:ユニークな方法は、実際には次のように型付き削除機能を定義することです:
class FooDeleter implements deleter
{
public function __construct(entite $Foo)
{
if( $Foo instanceof Foo ) { ... }
}
}