群飞开发技术门户

做您身边的学习顾问

注册
热点:

您现在的位置是:主页 > 网站开发 > php >

PHP命名空间真的槽糕吗?

时间:2012-01-17 01:07   来源:未知   收藏  复制分享 点击:

  在PHP 5.3中,最主要的一个新特征就是对命名空间惹人,在此之前,PHP开发者对于PHP中命名空间的实现,已经变得异常的巴望。当PHP应用起头变得巨年夜,而且加倍复杂的时辰,命名空间是解决代码冲突的需要手段。

  攻讦者:杂乱的PHP

  像C#和Java这些说话,是被设计和遵循严酷的语法尺度的。PHP是演化的。最早的版本发布于1995年,版本号3,是面向过程的说话。PHP 4包含了最根基的面向对象,而PHP 5供给了合适的尺度OOP模子,命名空间在版本PHP 5.3中被插手其中。

  

PHP

 

  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)
顶一下
(0)
0%
踩一下
(0)
0%

更多相关资讯

最新评论 进入详细评论页>>
发表评论
已有条跟贴(点击查看)
只允许会员评论,请先 登录注册
自动获取登录的用户名请自觉遵守互联网相关的政策法规,文明发言。