首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中命名空间的声明(5.3.5)

问PHP中命名空间的声明(5.3.5)
EN

Stack Overflow用户
提问于 2012-11-09 19:04:37
回答 2查看 85关注 0票数 0

好的,我刚接触命名空间,这是一个场景……我有两个文件

libs/class.mysql.inc.php

代码语言:javascript
复制
class MySQL{

}

classes/class.mysql.inc.php

代码语言:javascript
复制
require_once('libs/class.mysql.inc.php'); 
interface MySQLTemplate{
}
class MySQLWrapper extends MySQL implements MySQLTemplate{
}

好了,这是我的问题。如何才能将MySQLWrapper重命名为MySQL?显然‘类MySQL扩展了MySQL’是不可能发生的。我似乎也不能在需要文件之前声明一个名称空间。(我可以,但它不接受名称空间)。我也不想接触libs/class.mysql.inc.php文件(如果是poss的话)。

有什么提示吗?小贴士?这里有可能吗?

EN

回答 2

Stack Overflow用户

发布于 2012-11-09 20:40:17

在任何需要引用MySQLWrapper的地方,都需要这样一个带有use关键字的类:

代码语言:javascript
复制
use MySQLWrapper as MySQL;

//do your stuff with MySQL as an alias
票数 1
EN

Stack Overflow用户

发布于 2012-11-09 19:17:21

好的,看起来你只能在文件中定义命名空间,任何包含都会被忽略。我通过在文件的顶部声明一个随机的名称空间来解决这个问题(PHP喜欢在任何其他内容之前这样做)。然后,因为包含了该文件,所以包含类的名称空间是全局的。因此,我通过以下方式使其正常工作:

libs/class.mysql.inc.php

代码语言:javascript
复制
class MySQL{

}

classes/class.mysql.inc.php

代码语言:javascript
复制
namespace Libs;
require_once('libs/class.mysql.inc.php'); 
namespace App;
interface MySQLTemplate{
}
class MySQL extends \MySQL implements MySQLTemplate{
}

希望这对其他人有帮助。我挠头好一阵子,因为我不了解它的行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13306885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档