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

保留类对象名称的硬编码重新引用以在PHP注册表中使用,php,registry,Php,Registry,我想知道这是一种好的做法还是一种坏的做法,对于这种情况有什么更好的解决办法。基本上,我有一个PHP注册表,它可以通过以下语句实例化或返回类对象的现有实例: $classObject = $this->registry->getClassInstance(ObjectPath); 在本例中,ObjectPath是一个名称空间,因为我的项目就是这样设置的。因此,一个完全有效的例子是: $mysqli = $this->registry->getClassInstance('

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

$classObject = $this->registry->getClassInstance(ObjectPath);
在本例中,ObjectPath是一个名称空间,因为我的项目就是这样设置的。因此,一个完全有效的例子是:

$mysqli = $this->registry->getClassInstance('\application\models\Database\drivers\MySQLi');
但是,我没有每次手动键入类名称空间,而是:

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

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

它认为您应该使用composer为您自动执行此操作。这是一个很好的工具: 它会根据您提供的名称空间自动确定要实例化的内容。 但是,如果您真的想自己做这件事,我不建议您使用来自应用程序根目录的绝对路径