У меня есть расширение, скажем:
class UselessExtension extends DataExtension {
public function sayHello() {
echo "hello";
}
}
Я использую его для расширения двух классов через конфигурацию YAML:
Member:
extensions:
- UselessExtension
MyDataObject:
extensions:
- UselessExtension
Есть ли где-нибудь в SilverStripe функция для вызова, чтобы узнать, какие классы расширены моим UselessExtension?
Я ищу что-то вроде
DataExtension::getDecoratedBy('UselessExtension');
AFAIK, для этого нет встроенного метода, поэтому вам нужно написать свой собственный.
Что-то похожее на это должно работать:
function getDecoratedBy($extension){
$classes = array();
foreach(ClassInfo::subClassesFor('Object') as $className) {
if (Object::has_extension($className, $extension)){
$classes[] = $classname;
}
}
return $classes;
}
Других решений пока нет …