php trait 代码生成,[置頂] 關於PHP trait、生成器

Trait(PHP5.4.0之后才支持)

1、trait跟類相似,但是更輕便,想一下,如果A類和B類都需要一個獲取地理位置的功能,我們通常的解決辦法是寫一個父類,里邊定義一個獲取地理位置的函數,然后A類和B類都繼承它,缺點是讓無關的類有了同一個父類,強制了AB的關聯;還有一種解決辦法是定義一個接口interface,A和B都實現這個接口,這樣的缺點是,同樣一個獲取地理位置的功能要寫兩遍,不符合DRY(Dotn’t repeat yourself)原則;最后推薦使用trait,這更符合模塊化的觀念,實現如下

2、trait定義

123456

trait Geo {protected $myAddress;public function getAddress() {return $this->myAddress;}}

3、使用trait

12345678910111213141516

class A {use Geo;//A類的實現}class B {use Geo;//B類的實現}$a = new A();$b = new B();$a->getAddress(); //A類獲取地理位置$b->getAddress(); //B類獲取地理位置

4、小結:

其實trait就相當於一個可以放到類里的模塊,有啥通用的部分可以提出來,放到trait里邊,然后就不用在不同的類里重復實現了。

生成器(PHP5.5.0之后才支持)

1、生成器就是一個PHP函數,在一個函數中使用yield關鍵字,可以這樣理解,yield是一個大數組,yield關鍵字在這個函數里每出現一次,就會在這個數組里加入一個元素,需要注意的是,生成器不需要返回值,只通過yield產出值,最終返回的是一個Generator對象(就是剛才那個大數組)。

2、優點是占用內存小,下邊是一個生成范圍內數值的例子

1234567891011121314151617181920212223242526272829303132

//常規做法function makeRange($length) {$data = [];for($i=0;$i推薦寫法foreach(makeRange(999999) as $value) {echo $value;}

想了解跟多的知識,請加入627336556  技術開發交流群,會有意想不到的收獲~~~!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值