声明具有相同名称的2类但不能使用命名空间问题

时间:2017-01-24 10:41:15

标签: php namespaces

我为自己的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个关键字。 所以我被困在这里。 有人可以帮我吗?

0 个答案:

没有答案