网站大量收购独家精品文档,联系QQ:2885784924

PHP 5.4中如何写出整洁的代码.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PHP 5.4中如何写出整洁的代码

PHP 5.4中如何写出整洁的代码 在出台七个候选对象后,PHP5.4终于出炉,和以前一样,新版本有很多改进的地方。 从平台级别来讲,新的性能没有什么副作用:用户可以很方便地创建内置Web服务器或 其他工具,只要他们对维护工作不厌烦。但是语言设计者必须更小心:有些可能被滥用的性 能难保不被写成难以理解和重复使用的代码。 让我们看一下新性能,并以两项标准对其进行评分:实用性以及被滥用的可能性。这里 将避免论及与语言无关的事项。 Traits Traits是PHP5.4中最有名的创新:这是一个被水平重复利用的表单,类似于多重继承, 可以将多个域和方法放到到不同的地方,在类与traits之间建立多对多的关系。 Traits和mixins通常会导致使用traits的类表现出整体性欠佳:对象暴露了几百个方 法,因为它们准备好被随时抓取到trait中。 首先,PHP试图通过引入traits构成上的多个编译时间检测来限制多重遗传: 1.使用相同命名法的traits会导致严重错误,除非有明确的冲突解决办法。 2.traits位于单独的层级,因此它们是彼此的组成部分,但是不能从类那里借用代码。 3.它们支持抽象的成员,所以在组成类中强制要求方法定义;不能调用所显示类中未被 定义的成员。 4.除了所显示类中已有的属性,它们还可以定义属性。 5.它们可以覆盖遗留下来的构造函数,但是这种潜在的滥用被认为是漏洞,所以会被修 复。 笔者将traits与抽象类进行了对比,发现了一些相同的问题:耦合(遗传是一种修复过 的附属关系),较弱的可测性和可理解性,因为你需要看不同地方的代码。至于界面的组成, 当操作得当时,你就会停留在界面边缘,遗传可能带你跳跃层级。但现在有多个层级需要跨 越。 不过我们并不打算放弃该语言的遗传支持,因为即便是编程牛人也有使用这些性能的时 候。问题是在大多数使用案例,如使用Decorator或Composite,仅仅是因为它很酷而并非因 为被迫使用。 尽管Java API打算在没有traits的情况下完成操作,但我们不希望看到对象继承300多 个方法。因此笔者喜欢tratis展示,不过其真正的使用情况可能不怎么样。 实用指数:8 潜在滥用指数:8 数列的简短标记 PHP数列把Web中的大部分要素都连接在一起。他们可以是列表,地图和矩阵。而且作为 原语类型,它们可能已经被滥用,值对象或域对象或许更适合。 不过,新的简短标记本身并不是什么问题: [giorgio@Desmond:~]$ php -r var_dump([4,2]);‘ array(2) { [0]= int(4) [1]= int(2) } [giorgio@Desmond:~]$ php -rvar_dump([key = 4]); array(1) { [“key”]= int(4) } JavaScript和许多其他动态语言都有相同的句法,所以没有理由将array()强加给程 序员。这一句法对数列使用几乎没有影响。 实用指数8;潜在滥用指数8 数列解除参照 Alessandro Nadalin 公 布 了 简 单 的 使 用 案 例 (/hands-on-php-5-4-traits-and-other-good-stuff/),其中的 性能很简单,可在任何数列中保存关闭: $callbacks = array(key = function() {… }, …); $callbacks[key](); 不过,尽管[$field]()和[$field]有效,但是任何有两个()的尝试,如()[]() 不会产生句法错误。这些很有可能违背Demeter法则,因此笔者很庆幸没有支持永久连接。 实用指数:7 潜在滥用指数:4 关闭和数列调用,以及输入建议 用$variable()不仅可以调用关闭,还可以对数列($object, method’)等进行回 调。 这样就可以避免许多if和样板文件代码: $callback = function($param) use ($object){ return $object-method($param); };

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档