php 5.2中的命名空间

kra*_*mir 12 php namespaces php-5.2

我使用命名空间做了很少的web.我有它在我的电脑,我即将把它移动到使用PHP 5.2的免费托管.用于php 5.2的语法highlighter将它们解释为错误.

php 5.2是否支持名称空间?

如果没有,有什么办法可以使用它们而对现有代码进行少许更改?

Mic*_*ski 27

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


Dea*_*ado 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';
  }
}
Run Code Online (Sandbox Code Playgroud)

只需确保需要路径指向您保留模型的位置.您也可以使用其他文件夹而不是别名.

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