保留类对象名称的硬编码重新引用以在PHP注册表中使用


Keeping a hard coded rereference of Class Objects names to use in a PHP Registry

我想知道这是一个好的还是坏的做法,对于这种情况,有什么更好的解决方案。基本上,我有一个PHP注册表,它可以实例化或返回类对象的现有实例,方法是:

$classObject = $this->registry->getClassInstance(ObjectPath);

在这种情况下,ObjectPath是一个命名空间,因为我的项目就是这样设置的。因此,一个完全可行的例子是:

$mysqli = $this->registry->getClassInstance(''application'models'Database'drivers'MySQLi');

然而,我没有每次手动键入类名称空间,而是使用了:

$mysqli = $this->registry->getClassInstance($this->registry->mySQLiDriver());

它返回名称空间,使项目更易于使用和更新。这是个坏主意吗?是否已经有更好的实践可以达到同样的结果?

它认为应该使用composer自动为您完成这项工作。这是一个很好的工具:https://getcomposer.org/它会根据您提供的名称空间自动计算出要实例化的内容。但是,如果你真的想自己做这件事,我不建议你使用来自应用程序根的绝对路径。