我想将Doctrine集成到一个新构建的PHP5框架中。我正在使用命名空间。图书馆以地图形式组织:
app(控制器,块,操作......)
分机(外部图书馆)
sys(内核和路由对象)。
现在我想整合地图分机中的Doctrine。
在通话类中我有:
namespace app\example;
use ext\Doctrine\DBAL\DriverManager;
$conn = DriverManager::getConnection($connectionParams, $config);
为了完成这项工作,我需要将Doctrine中的每个命名空间引用更改为例如:
namespace ext\Doctrine\DBAL;
use ext\Doctrine\Common\EventManager;
在我看来,这是一个非常不优雅的解决方案。
问题: 有没有办法不改变Doctrine命名空间? 是否有更好的策略来处理外部图书馆?
答案 0 :(得分:0)
更好的策略是使用库提供的命名空间。改变这种情况非常不寻常。
我猜你的主要问题实际上是因为自动加载。请记住,命名空间和目录不必相同。
只需让自动加载器更加智能,即可在ext中查找外部库。您可以保留一个可以在那里找到的小型命名空间注册表。
更好的是,开始使用composer。