好的,我刚接触命名空间,这是一个场景……我有两个文件
libs/class.mysql.inc.php
class MySQL{
}classes/class.mysql.inc.php
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的话)。
有什么提示吗?小贴士?这里有可能吗?
发布于 2012-11-09 20:40:17
在任何需要引用MySQLWrapper的地方,都需要这样一个带有use关键字的类:
use MySQLWrapper as MySQL;
//do your stuff with MySQL as an alias发布于 2012-11-09 19:17:21
好的,看起来你只能在文件中定义命名空间,任何包含都会被忽略。我通过在文件的顶部声明一个随机的名称空间来解决这个问题(PHP喜欢在任何其他内容之前这样做)。然后,因为包含了该文件,所以包含类的名称空间是全局的。因此,我通过以下方式使其正常工作:
libs/class.mysql.inc.php
class MySQL{
}classes/class.mysql.inc.php
namespace Libs;
require_once('libs/class.mysql.inc.php');
namespace App;
interface MySQLTemplate{
}
class MySQL extends \MySQL implements MySQLTemplate{
}希望这对其他人有帮助。我挠头好一阵子,因为我不了解它的行为。
https://stackoverflow.com/questions/13306885
复制相似问题