我为自己的cms创建了自己的自动加载。但是当我的项目变得比我想象的要大时。我使用命名空间。但我意识到我无法在use
函数中使用autoload
。
无论如何加载具有相同名称但不同名称空间的2类。
我有2个班:
HumanDao.php:
class HumanDao extend Dao{
public function __construct(){
parent::__construct();
}
public function doSomething(){
.....
}
}
Monster.php
class MonsterDao extend Dao{
public function __construct(){
parent::__construct();
}
public function doSomething(){
.....
}
}
Dao.php
class Dao {
public function __construct(){
loadAdapter();
}
private function loadAdapter($folder,$name){
//load all adapters of a dao with their own model
}
public function doSomething(){
.....
}
}
但我的项目比我想象的要大。
我有2个具有相同名称BodyAdapter
但代码不同的适配器,并由不同的DAO加载并使用2个不同的模型,不同的文件夹。起初,我认为没关系。因为每个DAO只加载BodyAdapter
。但Php仍然抛出Can't redeclare
。所以我在每个Adapter中添加了名称空间(名称空间:Human,Monster)。并尝试:
public function loadAdapter($folder,$name){
use $folder;
include $folder.$name;
$this->name = $name::getInstance();
}
但是php无法在函数中解析use
个关键字。
所以我被困在这里。
有人可以帮我吗?