dqve65954 2015-07-02 08:55
浏览 35

列出所有扩展类及其设置

I have a system where I am creating multiple classes that all extend from an abstract class.

Each class also declares 'settings' for that particular class type.

Example:

class First extends Base {

    protected $name = 'First';
    protected $lug = 'first';
    protected $fields = [
        'name',
        'address',
        'phone',
    ];

    function __construct()
    {
        parent::__construct();
    }

    public function abstractMethod()
    {
        // do stuff for this particular class
    }


}

and

class Second extends Base {

    protected $name = 'Second';
    protected $lug = 'second-one';
    protected $fields = [
        'first-name',
        'last-name',
        'email',
    ];

    function __construct()
    {
        parent::__construct();
    }

    public function abstractMethod()
    {
        // do stuff for this particular class
    }


}

Now what I want to be able to do is grab all extended classes and their 'settings' and return something like this:

$classes = [
    'first' => [
        'name' => 'First',
        'slug' => 'first',
        'fields' => ['name', 'address', 'phone']
    ],
    'second' => [
        'name' => 'Second',
        'slug' => 'second-one',
        'fields' => ['first-name', 'last-name', 'email']
    ]
];

So how would I go about doing this? Is there a better way?

I am using Laravel if that helps.

Edit: To Explain why not a duplicate

I'm not just after a way to get classes and their information I am after a way to architect this situation. I am essentially creating an extensible plugin system and need a way to Tell-Don't-Ask which plugins have been added.

  • 写回答

3条回答 默认 最新

  • douzhi7070 2015-07-02 09:03
    关注

    I didn't try it, but it should work. Or it'll directs you.

    $result = array();
    foreach (get_declared_classes() as $class) {
        if (is_subclass_of($class, 'Base'))
            $result[] = get_class_vars($class);
    }
    

    But your properties needs to be public also.

    评论

报告相同问题?

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)