Silverstripe 3.1: Как узнать, какие классы украшены DataExtension

У меня есть расширение, скажем:

class UselessExtension extends DataExtension {
public function sayHello() {
echo "hello";
}
}

Я использую его для расширения двух классов через конфигурацию YAML:

Member:
extensions:
- UselessExtension
MyDataObject:
extensions:
- UselessExtension

Есть ли где-нибудь в SilverStripe функция для вызова, чтобы узнать, какие классы расширены моим UselessExtension?

Я ищу что-то вроде

DataExtension::getDecoratedBy('UselessExtension');

1

Решение

AFAIK, для этого нет встроенного метода, поэтому вам нужно написать свой собственный.

Что-то похожее на это должно работать:

function getDecoratedBy($extension){
$classes = array();
foreach(ClassInfo::subClassesFor('Object') as $className) {
if (Object::has_extension($className, $extension)){
$classes[] = $classname;
}
}
return $classes;
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]