Кто-нибудь знает, возможно ли в PHP заставить класс расширять или реализовывать интерфейс без его объявления дочерним классом?
Пример:
interface Requirements
{
public function __construct();
public function kittens();
}
class DingleBerry
{
public function __construct()
{
// yadda yadda yadda
}
}
// Example of my initial hope
// of what you could do
$kittens = new DingleBerry implements Requirements;
Очевидно, что это не работает, но мне нужен способ загрузки классов, которые не имеют заранее определенных знаний о требованиях к интерфейсу, но вынуждены их соблюдать.
Моя общая цель — проверить, реализует ли класс требования ДО его загрузки и вызова его конструктора.
Поэтому я НЕ МОГУ использовать это:
interface Requirements
{
public function __construct();
public function kittens();
}
class DingleBerry
{
public function __construct()
{
// DO BAD STUFF (i.e. eat your soul)
}
}
// Example of what I CANNOT
// do.
$kittens = new DingleBerry;
if( !($kittens instanceof Requirements) )
{
// eat pizza.
}
Потому что конструктор DingleBerry вызывается до того, как я могу проверить, реализует ли он требования. Копать землю?