Декларация аргумента функции - передача имени класса
есть произвольный класс например class Shop implements \IShop {} и есть другой класс например
class Product
{
private $shop;
public function __construct(\IShop $shop)
{
$this->shop = $shop;
}
}
$product = new Product(Shop::class);
выдаст ошибку, потому как Shop::class передается в виде строки, а экземпляр не нужен - так как все методы будут статичными, пробовал указывать тип в аргументе не класс, а интерфейс - результат тот же.
Вопрос: как сделать проверку - что это именно тот класс или интерфейс который мне нужен, можно даже на основе интерфейса
Ответы (1 шт):
Автор решения: u_mulder
→ Ссылка
Выяснить, является ли класс наследником другого класса (или интерфейса) зная только названия этих классов (строки) можно с помощью is_subclass_of.