为 PHP5.2- 框架提供 PHP5.3+ 命名空间的类名别名

Posted

技术标签:

【中文标题】为 PHP5.2- 框架提供 PHP5.3+ 命名空间的类名别名【英文标题】:Providing PHP5.3+ namespaced classname aliasses for PHP5.2- framework 【发布时间】:2014-02-04 01:28:42 【问题描述】:

我有一些 php5.2- 框架使用像这样的长类名:

class Product_Sub_SomeClass 
    ...

我希望能够为 PHP5.3+ 用户提供一种使用命名空间和短类名的方法,同时保持框架的 PHP5.2 兼容性。

上面的示例类在 PHP5.3 开发者的代码中应该是可用的:

use Product\Sub;
$someclass = new SomeClass();

但是完全相同的类(相同的源代码)也应该对 PHP5.2 用户可用:

$someclass = new Product_Sub_SomeClass();

我可以只提供一个处理所有别名的附加文件,还是有其他或更好的机制可用?

向 PHP5.2- 框架的 PHP5.3+ 用户提供命名空间和类别名的最佳做法是什么?

【问题讨论】:

【参考方案1】:

找到了我自己对这个问题的答案:

class Product_Sub_SomeClass 
    ...


// Alternative PHP 5.3+ namespace\class
if (function_exists('class_alias')) 
    class_alias('Product_Sub_SomeClass', 'Product\Sub\SomeClass');

【讨论】:

以上是关于为 PHP5.2- 框架提供 PHP5.3+ 命名空间的类名别名的主要内容,如果未能解决你的问题,请参考以下文章

PHP5各个版本的新功能和新特性总结

APMServ5.2.6 升级php5.2 到 5.3版本

PHP5各个版本的新功能和新特性总结

php的更新

php各个版本的区别

PHP 命名空间移除/映射和重写标识符