遇到了一个我自己似乎无法弄清楚的问题。
使用Symfony自动加载模块。
这是我的工厂:
namespace Core\Factories;
use \Core\Gateway;
class DatabaseAccessFactory {
// Define client type
const DEF = 'mongo';
public function createObject($type) {
switch($type) {
case self::DEF:
return new MongoClientGateway();
break;
default:
return false;
}
}
}
/Core/Gateway/MongoClientGateway.php的示例
<? namespace Core\Gateway;
class MongoClientGateway implements MongoDbGateway {
public function setUp(){
}
public function query(){
}
public function save(){
}
}
所以,基本上我使用“use”关键字将网关命名空间加载到我当前的命名空间,然后我尝试实例化一个位于\ Core \ Gateway命名空间下的类,但是它说找不到类。我错过了什么吗?
答案 0 :(得分:1)
您还需要指定类
use Core\Gateway\MongoClientGateway
或使用您使用的命名空间访问该类
new Gateway\MongoClientGateway
顺便说一下,使用\ Core \ Gateway
中不需要第一个“\”答案 1 :(得分:1)
use Foo\Bar
,没有反斜杠。use Foo\Bar
并不意味着每个Class
现在都隐含地解析为Foo\Bar\Class
。 use Foo\Bar
是use Foo\Bar as Bar
的简写,因此您只能使用Foo\Bar
来引用名称空间Bar
。 use
不是“导入命名空间”,它是别名命名空间为更短的名称。Gateway\MongoClientGateway
,则需要明确地写use Core\Gateway\MongoClientGateway
或MongoClientGateway
。答案 2 :(得分:0)
示例代码:
use \my\namespace\className
new ClassName();
这将使类名称在没有名称空间的情况下可访问。