你的位置:面向PHP >> 资讯 >> 特别关注 >> 详细内容 在线投稿

PHP的命名空间真这么糟糕么?

热度233票  浏览128次 【共0条评论】【我要评论 时间:2009年9月27日 23:36
文章信息

来源:翻译

x}K:~IR-Nb0几年前(大约应该在02-03年之间,也就是php5刚出来那会)曾经跟朋友讨论过一次关于php的命名空间的问题。当时觉得,php要是能有命名空间,那是多完美的事情啊。
.I(A1Q sP1F0如今,php5.3已经包含了命名空间。但是似乎并没有当年的那种感慨了。大约是旧的系统要迁移,新的系统要重新设计,这个名字空间都有点鸡肋的感觉。看来还要习惯一下才好。
]_1[-b4e uUd#q0看到这篇文章,觉得说得是有点对的。也不长,就随手翻译出来。翻译后的感觉:作者 超级喜欢使用“However”。
`%u&h6Ng,P8O0能说明两个问题:面向PHPv!\ `F WX-J

  1. php本身为什么是这样
  2. php的名字空间为什么是这样
面向PHP Y pv-~u

作者:Craig Buckler面向PHP C#qw6h&nV
原文:http://www.sitepoint.com/blogs/2009/08/13/are-php-namespaces-bad/面向PHP5x/Xvb@-u,G"V
PHP namespaces

ux6f*H$y@.?%X0面向PHP%|2Aff;c3Jfrs

PHP开发者对于PHP中命名空间的实现,已经变得异常的渴望。当PHP应用开始变得巨大,并且更加复杂的时候,命名空间是解决代码冲突的必要手段。
UE i)E`0我最近的一些指南收到了大量关于PHP的命名空间实现的评论。问题主要集中在语法和反斜杠上面。在解决这些问题之前,让我们先来快速回顾一下PHP的历史。

!\Hx^ZPka0

混乱的PHP

g{3S0y X f0像C#和Java这些语言,是被设计和遵循严格的语法标准的。PHP是演化的。最早的版本发布于1995年,版本号3,是面向过程的语言。版本4包含了最基本的面向对象,而版本5提供了合适的标准OOP模型。命名空间在版本5.3被加入其中。面向PHPpn4Hc i6A(v

面向PHP;|P/_8v'l!H|

PHP批评者声明说这个语言是混乱的。函数名不一致(例如strpos,str_split,substr),对象处理是无用的,还有一些语法同其他语言相比,不是极其怪诞,就是异乎寻常。面向PHP kTgbe1gK

面向PHPeQl%Dci;x2N5q

然而,PHP仍然保持着使用最广泛的服务器端开发语言的头把交椅。它的才华主要在下面的长处:面向PHP7U5O#A#b[ zf:Q

  • 初学者可以从简单的面向过程编程开始。他们无须触及OOP技术仍然可以有所见数。
  • 10年前为PHP 3编写的代码仍然可以运行在PHP 5.3下。可能需要一些微小的调整,但是很少需要大量重写。
面向PHP8zI6AV+t5j2A

PHP代码可能并不总是可爱的、有逻辑的或者优雅的,但是相比其他选择它的开发总是快捷和容易被理解的。面向PHP+}I dA"TwqhJp

PHP命名空间的实现

3W"yZ$oiX0不像C#和Java,PHP不得不保持没有名字空间代码的兼容性。这个已经被实现,你可以选择使用或者不使用命名空间。然而,如果你使用PHP 5.3或更高版本,我推荐使用命名空间,即使你在项目中只使用相同的名字。

N:z eMOp{1V0面向PHPzO,h/E;uQ

使用namespaceuse作为命名空间操作符看起来很有逻辑。一些开发者可能不同意,但是在这种情况下它们如何命名其实并不重要。面向PHP@H3e zb/k z!U

%IZ9d:jE(I$uY0最后,回到反斜杠的问题上。多数批评者人为这是丑陋的,难以阅读,并且在Mac上难以输入。即便如此,我仍然认为它比曾经提议过的两个冒号要好。例如下面的静态方法调用:

5Nx)@_8|PG;XHo0
// PHP 5.3 beta版静态方法调用
lk&[!s0f,RX0echo ::App::Lib1::MyClass::WhoAmI();面向PHP XT5_)e1GJi
// PHP 5.3正式版静态方法调用面向PHP,b:{ F,Ie4[y w
echo \App\Lib1\MyClass::WhoAmI();

4`+oF5w^(NKQG#Y0第二行可以被快速录入,更少的错误可能,容易阅读,并且容易理解。如果你在字符串之外看到反斜杠,你就知道那一定存在命名空间。面向PHP S re*lC)@'e%A#C$s

&}O7Q4` c0当然,如果PHP使用“.”作为公共方法、静态方法和命名空间会更好。这样可以同Java、C#、JavaScript、Python和许多其他语言一致起来。不幸的是PHP的历史和向下兼容让这一切难以实现。

)d"]U\2av hW u(P0面向PHPinI'G Z`fn

没有语言是完美的,而PHP更加不会是完美语言中的一员。无论如何,命名空间已经被很好的实现,特别是考虑到它可能产生的限制和问题。我相信你一定会学习并且着迷那个反斜杠的。

lpA'@:qknL0面向PHP&_9\?7b)r

相关阅读:面向PHPh8l5\4`@_G6T

TAG: PHP php 空间
顶:17 踩:14
对本文中的事件或人物打分:
当前平均分:-0.22 (68次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.83 (72次打分)
【已经有62人表态】
14票
感动
5票
路过
9票
高兴
11票
难过
9票
搞笑
5票
愤怒
4票
无聊
5票
同情
上一篇 下一篇
发表评论

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】