Silverstripe 3.1:如何知道DataExtension装饰了哪些类

时间:2014-10-01 13:55:16

标签: php design-patterns silverstripe

我有一个延期,说:

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

我用它来通过YAML配置扩展两个类:

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

SilverStripe中是否有一个函数可以调用以便知道我的UselessExtension扩展了哪些类?

我正在搜索类似

的内容
DataExtension::getDecoratedBy('UselessExtension');

1 个答案:

答案 0 :(得分:3)

AFAIK,没有内置的方法,所以你需要自己编写。

类似的东西应该有效:

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