12

我用命名空间做了一点网络。我的电脑里有它,我正准备把它移到使用 php 5.2 的免费主机上。php 5.2 的语法荧光笔将它们解释为错误。

php 5.2 支持命名空间吗?

如果没有,有什么方法可以在对现有代码进行少量更改的情况下使用它们?

4

5 回答 5

28

5.3 之前的版本不支持命名空间。不幸的是,没有办法让它们适应 5.2。

于 2011-06-24T19:59:34.293 回答
8

命名空间仅在 5.3 中可用

至少在类的情况下,您可以使用该class_exists函数来检查一个类是否已经在全局命名空间中以类似的名称定义。与该__autoload()功能相结合,您可以创建一个通用别名,并让系统检查以原始名称命名的类以及带有某种额外标识符的名称。我将使用“ns”作为示例。

function __autoload($class){
  try{
     require_once('ns'.$class.'.php');
  }catch(Exception $e){
     echo 'The class is unavailable in pseudo-namespace as well as global';
  }
}

只需确保 require 路径指向您保存模型的任何位置。您也可以使用其他文件夹而不是别名。

这样,任何重复的类都可以放入与主执行分开的文件中,只有当它们不存在于全局中时才会包含它们。虽然这并不能严格解决必须物理重命名类的问题,但它允许您将定义放在不同的目录中以进行版本控制等。

于 2011-06-24T20:22:59.947 回答
3

自 PHP 5.3.0 起,名称空间在 PHP 中可用。

来源:http ://www.php.net/manual/en/language.namespaces.rationale.php

于 2011-06-24T20:00:36.853 回答
1

http://www.php.net/manual/en/language.namespaces.rationale.php

自 PHP 5.3.0 起,名称空间在 PHP 中可用。

于 2011-06-24T20:00:18.600 回答
0

我刚刚遇到这个问题,我自己开发了一个图像上传脚本并添加了一些第三方代码来帮助图像处理(裁剪),但他们使用命名空间,在我的开发机器上工作正常,但是当我上传到实时服务器时,我得到了解析错误。

幸运的是,我的主机支持 php 5.3 和 5.4,所以我要求他们为我将其更改为 5.3,我希望这能解决我遇到的问题,只需删除命名空间就会使脚本失败:(

保罗

于 2013-12-02T13:47:05.617 回答