Php 类别名与变量类名称

Php 类别名与变量类名称,php,class,variables,registry,alias,Php,Class,Variables,Registry,Alias,我正在创建自己的PHP框架(用于学习体验),我无法决定哪一个是更好的实践 创建一个具有每个类的名称的注册表类。其他类将调用注册表来查找类名 创建一个AliasRegistry类,该类将为每个类创建别名 使用第一个设计访问类名时,我的代码如下所示: $delegateClass = $this->registry->delegate; $object = new $delegateClass; $object = new _NI_ALIAS; 使用第二种设计

我正在创建自己的PHP框架(用于学习体验),我无法决定哪一个是更好的实践

  • 创建一个具有每个类的名称的注册表类。其他类将调用注册表来查找类名

  • 创建一个AliasRegistry类,该类将为每个类创建别名

  • 使用第一个设计访问类名时,我的代码如下所示:

        $delegateClass = $this->registry->delegate;
        $object = new $delegateClass;
    
        $object = new _NI_ALIAS;
    
    使用第二种设计访问类时,我的代码如下所示:

        $delegateClass = $this->registry->delegate;
        $object = new $delegateClass;
    
        $object = new _NI_ALIAS;
    
    它还允许我动态扩展其他类并实现接口

        class Template implements _NI_ALIAS
    
    第二个对我来说更有意义,特别是因为我可以将它包含在框架的名称空间中;但出于某种原因,我看到人们把这称为pad实践,因为它会影响全球


    您认为哪一种做法更好?

    为什么不直接设置spl_自动加载,并根据请求自动加载每个类,然后使用它,而不是跳过这些障碍?为什么要为此设置注册表?使用
    newnameofclass()
    不是更容易吗?我想说的是,最佳实践与您正在考虑的都不一样。尝试查看现有框架,看看它们是如何工作的……我希望能够在一个中心位置动态更改类。假设我有一个EventHandler类,其他很多类都依赖它,有人想“导入”一个不同的类;他们可以指定一个新类并使用相同的别名,而不是删除原始类。同样,在上一个示例中,
    类模板实现了\u NI\u别名
    -如果
    \u NI\u别名
    是一个常量变量,则会出现致命错误