PHP命名空间真的槽糕吗?
在PHP 5.3中,最主要的一个新特征就是对命名空间惹人,在此之前,PHP开发者对于PHP中命名空间的实现,已经变得异常的巴望。当PHP应用起头变得巨年夜,而且加倍复杂的时辰,命名空间是解决代码冲突的需要手段。
攻讦者:杂乱的PHP
像C#和Java这些说话,是被设计和遵循严酷的语法尺度的。PHP是演化的。最早的版本发布于1995年,版本号3,是面向过程的说话。PHP 4包含了最根基的面向对象,而PHP 5供给了合适的尺度OOP模子,命名空间在版本PHP 5.3中被插手其中。

PHP攻讦者声明嗣魅这个说话是杂乱的。函数名纷歧致(例如strpos,str_split,substr),对象措置是无用的,还有一些语法同其他说话对比,不是极其荒唐,就是异乎平常。然而,PHP仍然连结着使用最普遍的处事器端开发说话的头把生意。它的才调首要不才面的利益:
◆初学者可以巨匠单的面向过程编程起头。
◆他们无须触及OOP手艺仍然可以有所见数
10年前为PHP 3编写的代码仍然可以运行在PHP 5.3下。可能需要一些细小的调整,可是很少需要年夜量重写。PHP代码可能并不老是可爱的、有逻辑的或者优雅的,可是对比其他选择它的开发老是快捷和轻易被理解的。
PHP命名空间的实现
不像C#和Java,PHP不得不连结没有名字空间的代码的兼容性。这个已经被实现,你可以选择使用或者不使用命名空间。然而,如不美观你使用PHP 5.3或更高版本,我举荐使用命名空间,即使你在项目中只使用不异的名字。
使用namespace和use作为命名空间操作符看起来很有逻辑。一些开发者可能分歧意,可是在这种情形下它们若何命名其实并不主要。最后,回到反斜杠的问题上。年夜都攻讦者酬报这是丑恶的,难以阅读,而且在Mac上难以输入。即便如斯,我仍然认为它比曾经提议过的两个冒号要好。例如下面的静态体例挪用:
// PHP 5.3 beta版静态体例挪用
echo ::App::Lib1::MyClass::WhoAmI();
// PHP 5.3正式版静态体例挪用
echo \App\Lib1\MyClass::WhoAmI();
第二行可以被快速录入,更少的错误可能,轻易阅读,而且轻易理解。如不美观你在字符串之外看到反斜杠,你就知道那必然存在命名空间。
当然,如不美观PHP使用“.”作为公共体例、静态体例和命名空间会更好。这样可以同Java、C#、JavaScript、Python和良多其他说话一致起来。不幸的是PHP的历史和向下兼容让这一切难以实现。
没有说话是完美的,而PHP加倍不会是完美说话中的一员。无论若何,命名空间已经被很好的实现,出格是考虑到它可能发生的限制和问题。
文章作者经由过水平析PHP命名空间的实现,来还击那些PHP否决者的声音,您是否体味PHP的命名空间为什么是这样的呢?PHP的命名空寄真的就那么槽糕吗?作为PHP开发者,您是若何认为的呢?
(责任编辑:admin)上一篇:深入理解PHP中的匿名函数
更多相关资讯
相关文章
更多>>- PHP 中检查库或函数是否可用(01-18)
- PHP命名空间真的槽糕吗?(01-17)
- 深入理解PHP中的匿名函数(01-17)
- php获取flv视频时间(01-17)
- 处理PHP字符串的10个简单方法(01-17)
- 有效防御PHP木马攻击的技巧(01-17)
- PHP中的CURL函数库(Client URL(01-17)
- 谈PHP闭包特性在实际应用中的(01-17)
- 教你如何成为PHP高手?(01-17)
- php上传大文件设置(01-17)

腾讯QQ
微软MSN
阿里旺旺
移动飞信
360安全卫士
360免费杀毒
搜狗输入法
千千静听
酷我音乐盒
PPS
QQ影音
暴风影音
迅雷
115U蛋
WinRAR
115浏览器
火狐浏览器
一键还原
Photoshop
Flashplayer
PDF 阅读器


