無標題文檔

PHP 5.4 的 Trait 特性(翻译整理)

原文: http://www.xpertdeveloper.com/2011/11/trait-in-php/ 。这里总结下注意的几 点:

  • Trait 会覆盖调用类继承的父类方法
  • Trait 无法如 Class 一样使用 new 实例化
  • 单个 Trait 可由多个 Trait 组成
  • 在单个 Class 中,可以使用多个 Trait
  • Trait 支持修饰词(modifiers),例如 final、static、abstract
  • 我们能使用 insteadof 以及 as 操作符解决 Trait 之间的冲突

-- Split --

一些看法

坦白讲,我第一眼看到 Trait 对它并没有任何好感。PHP5 以来带来的新特性已经足够得 多,而且让开发者们有点应接不暇。

同时,Trait 更像是程序员的 「语法糖」 ,然而它提供便利的同时可能会造成巨大的隐患。 例如 Trait 能够调用类中的成员:

trait Hello {
    public function sayHelloWorld() {
        echo 'Hello'.$this->getWorld();
    }
    abstract public function getWorld();
}

class MyHelloWorld {
    private $world;
    use Hello;
    public function getWorld() {
        return $this->world;
    }
    public function setWorld($val) {
        $this->world = $val;
    }
}

同时,针对类中已经实现的方法,Trait 没有效果

trait HelloWorld {
    public function sayHello() {
        echo 'Hello World!';
    }
}

class TheWorldIsNotEnough {
    use HelloWorld;
    public function sayHello() {
        echo 'Hello Universe!';
    }
}

$o = new TheWorldIsNotEnough();
$o->sayHello(); // echos Hello Universe!

那么 Trait 的出现是为何呢? 有哥们的回答比较有意思 ,但不无道理:

因为php没有javascript作用域链的机制,所以无法把
function bind到class里面,曾经以为php 5.3的闭包
可以做这个事,最后才发觉作用域的设计不允许这么干

但话说回来,拿 interface 和 Trait 类比,显然 Trait 有更多方便的地方(虽然 两者不能完全相互替代)。

不过很显然 Trait 目前还处于测试阶段,它的未来相比其他 PHP5 新推来的特性还有 更多让人观望的地方,但或许这特性能改变 PHP5 未来继承的方式。

因为,我个人坚信 PHP 的作用链设计迟早会改得「更像 JavaScript」,即便这事情会在遥远的 PHP6 。

参考链接

-- EOF --

随记 Google Developer Day 2011

有幸参加了 今年的 GDD ,这里主要记录下对于当天所见的所得。

从时间和会场的安排上来看,一天的时间、两个会场想要同时听遍所有的演讲是不可能的。从技术方向来看,今年的 GDD 明显分成了 HTML5 和 Android 俩大块。由于目前工作的关系,我更多的参加了有关 Android 的内容演讲。

<!--
http://s0.i1.picplzthumbs.com/upload/img/ad/fc/2d/adfc2d40247febc41ceac0af56c7a1704c768d22_wmeg_00001.jpg
-->

Android 其实还是舶来品

Google 的工程师 Galpin 在讲述 Android4.0 新功能的时候,我特意留意了下现场参会者的手机。比较有趣的一点是现场参与者的手机程三大派系:iOS 设备(iPhone4 居多)、非智能手机(NOKIA 居多)、还有就是各种 Android 设备。

当然,这个现场其实很容易找到原因,有可能是 GDD 本身就是非盈利性的会议,来者的背景各种各样;同时,这会其实是 Google 自己的产品推介会(即便是面向开发者),所以推广产品的氛围会大于技术讨论。

根据我对些数据的掌握,从地理上说南北方的差异还是很大的。iOS 似乎在上海这座城市明显比 Android 设备要多些(在地铁上的观察),这是否预示着 iOS 设备比各种 Android 设备更受人欢迎些?

Google 是「版本控」

回到 Android4.0 本身,先对于新功能本身不做任何的评论。单单对比其版本号,就十分的有意思。iOS 从 1.0 发展到 5.0 用了将近四年的时间,而 Android 从 1.5 发展到 4.0 只用了不到二十个月(当然,这没法和 Chrome 比)。

会议间坐我旁边的哥们带点报怨的口气在揶揄:「不用等到 2012,我们就可以用的上 5.0 ,和 iOS 看齐了!」。版本号的迅速提升显然对于开发者而言是个坏消息,Google 这做法我想是出于商业和推广考虑。

Google Maps?

似乎每次 GDD 都会有个主题,这次的 GDD 有大量的 Google Maps 上的技术推广。从技术角度上讲,有关 Google Maps 的技术阐述并不十分的复杂。

今年主讲 Google Maps 我不得不讲前几天传出 Google Maps 将要收费的传闻 联系起来。

虽然官方并没有对此做任何正面的回应,但一旦如果其收费,那么对于开发者而言,Google Maps 将会是他们的成本还是新的赢利点?

毕竟,从目前的市场情况而言,Google Maps 是绝对占有领导性的地位的。

Web VS. Native

今年 GDD 分成 Android 与 HTML5 俩大块,实际上按照我的理解其实就是 Native App 与 Web App 的两大不同派系的技术发展方向。

很明显,从各会场的参与人数就可以看出,上海开发者对于 Android 的兴趣目前占有绝对的优势。不过也可以了解到,很多都是想往 Android 平台上转移的开发人员(他们或许是上述使用 NOKIA 的一员?)。

一直在追赶

据 Google 官方的阐述,Android 市场的下载量首次超过 iOS。个人对于这新闻并不十分的激动,在我看来 Google 过于强调数量而忽略了质量。

同比想到了 Google 近期的一系列调整 ,我不得不说「Google,你还是别追了,另外条路更适合你」。

— EOF —

从 MIUI 看小米手机

http://ww3.sinaimg.cn/bmiddle/66f6d583jw1dkmgeye0w0j.jpg

距离小米手机发布会已经过去一段时间 ,从媒体的声音方面看不乏赞美之词。个人认为如果从来没有接触过此手机,而对其大加赞美是没有任何说服力的。

毫无疑问,小米手机必然搭配的是自家的 MIUI 系统 。因此通过使用详细使用此系统,便能对即将发售的小米手机有个比较直观的认识。

「幸运的是」,MIUI 对我的 HTC Desire G7 有比较完整的支持,刷机的过程不算复杂半个小时搞定。

刷完机经过「漫长」的等待以后,小米手机的界面让人的第一感觉它更像是台「山寨的 iPhone 手机」。

安装好 MIUI 以后基本可以不用 安装其它软件就可以上手使用 :完全为国人定制的输入法、符合国情的流量控制、相对类似 HTC 界面算不上丑的天气预报程序等…

整个系统用下来以后,基本上可以用「流畅」来形容,类似 iPhone 的操作界面虽然不免有些俗套,但毕竟没有扔给用户过多学习的包袱。

总体而言,的确可以想象 MIUI 相对于魅族没有过多的「历史包袱」。依靠 Android 这座大山,没有其它如底层架构等方面得困扰,这使得它能比较专注得做好用户人机接口。

MIUI 对比阿里云手机系统,其拥有更完整的社区生态圈,MIUI 在 Android 刷机用户群中拥有比较好的口碑。

同样基于 Android 系统,阿里云手机系统我只能用残念来形容,这对于很多人而言是个非常好的负面案例。

除了对于 MIUI 的印象外,在 硬件成本方面考虑 ,魅族是使用自家的硬件设计,这成本自然不会降低,两千多的售价和 HTC 等厂商的旗舰机型竞争自然非常的吃力。

而售价相对比较低的 阿里云手机(其实就是天语 W700) ,虽然价格方面有优势,但不到 400RMB 的差价实在是没有多大的差距。

除去硬件成本外,顺便聊聊销售渠道和售后。魅族有自己的品牌店,但「羊毛出在羊身上」这部分的推广费用自然最终会让用户承担。

物流方面小米手机会使用凡客的物流 ,成本能更好的控制,从而能降低一定的成本。那么后期的运营呢?我想小米手机暂时会以种子用户的口碑为主,这从个侧面也能理解小米必须要做好这款手机。

总之,不差的系统加上并不糟糕的手机,加上相对比较合适的售价,小米手机的关注程度和市场预期自然不会冷淡。

虽然我个人暂时还会抱着我的 g7 不放手(或许我会入它的次代产品)。总之,如果你近期想拥有台 Android 手机,那么小米手机或许会是你合适的选择。

— EOF —

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHubTwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 要知道作为码农取名是件很难的事情,所以不想在取名这事情上太费心思。

作为八零后,自认为还仅存点点可能不怎么被理解的幽默感,以及对平淡生活的追求和向往。 为了避免不必要的麻烦,声明本站所输出的内容以及观点仅代表个人,不代表自己所服务公司或组织的任何立场。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章