构建可扩展系统的最佳方式

时间:2014-10-21 15:00:05

标签: php oop architecture

我正在开发一个PHP CMS,我对灵活和“可扩展”架构有疑问。

我希望允许用户“扩展”系统中的每个类。 例如,如果我有课程User

<?php
namespace MyCMSName\Extensions\Users;

class User
{
    public function getUserAvatar()
    {
        // return file path, for example
    }
}

现在我想对用户头像做点什么。例如,为每个用户返回不同的图像。

<?php
namespace MyCMSName\Extensions\FakeUserAvatars;

class User extends MyCMSName\Extensions\Users\User
{
    public function getUserAvatar()
    {
        // return another path
    }
}

但是在系统的某个地方我有用户对象构建。我需要创建FakeUserAvatars\User,而不是原始Users\User对象。

...
$user = new (? How can I determine which class to construct?)

我应该创建一些关于地图«原始类→扩展类»的东西,然后在安装新扩展时生成它吗?然后我可以获得超载原始的类并创建新实例。但是自动加载呢?似乎我应该有自定义函数来加载系统中的每个类,如果我想使它“可扩展”。

你怎么看? 对不起,如果我写错了,英语不是我的母语......

0 个答案:

没有答案