PHP7匿名類用法分析
本文實(shí)例講述了PHP7匿名類用法。分享給大家供大家參考,具體如下:
匿名類跟匿名函數(shù)一樣,創(chuàng)建一次性的簡(jiǎn)單對(duì)象
<?php /** * Created by PhpStorm. * User: bee * Date: 2016/4/24 * Time: 00:17 */ echo '匿名函數(shù)'; $anonymous_func = function(){return 'function';}; echo $anonymous_func(); echo '<br>'; echo '<hr>'; class common { public $default = 10; function __construct($key){ $this->getVal($key); } public function getVal(int $i):int{ $this->default += $i; return $this->default+0.1; } } echo '有名函數(shù)';echo '<br>'; $com = new common(1); echo $com->getVal(2.2).'--'; echo $com->getVal(2.2).'--'; echo (new common(1))->getVal(8.9); echo '<hr>';echo '匿名類'; //定義匿名類需繼承 echo (new class(1) extends common{})->getVal(90);echo '<br>'; echo (new class(2) extends common{})->getVal(90);
運(yùn)行效果圖如下:
匿名類被嵌套進(jìn)普通 Class 后,不能訪問這個(gè)外部類(Outer class)的 private(私有)、protected(受保護(hù))方法或者屬性。 為了訪問外部類(Outer class)protected 屬性或方法,匿名類可以 extend(擴(kuò)展)此外部類。 為了使用外部類(Outer class)的 private屬性,必須通過構(gòu)造器傳進(jìn)來:
<?php class Outer { private $prop = 1; protected $prop2 = 2; protected function func1() { return 3; } public function func2() { return new class($this->prop) extends Outer { private $prop3; public function __construct($prop) { $this->prop3 = $prop; } public function func3() { return $this->prop2 + $this->prop3 + $this->func1(); } }; } } echo (new Outer)->func2()->func3();//6
匿名函數(shù)可以實(shí)現(xiàn)閉包,那么相應(yīng)的匿名類也可以實(shí)現(xiàn)閉包
<?php /** * Created by PhpStorm. * User: bee * Date: 2016/4/24 * Time: 1:51 */ $arr = array(); for ($i=0; $i<3; $i++){ $arr[] = new class($i){ public $index=0; function __construct($i) { $this->index = $i; echo 'create</br>'; } public function getVal(){ echo $this->index; } }; } $arr[2]->getVal(); echo '<br>'; var_dump($arr[1]);
運(yùn)行效果圖如下:
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP基本語法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
PHP中設(shè)置時(shí)區(qū),記錄日志文件的實(shí)現(xiàn)代碼
php中設(shè)置時(shí)區(qū) 記錄日志文件的實(shí)現(xiàn)代碼,需要的朋友可以參考下2013-01-01PHP基于迭代實(shí)現(xiàn)文件夾復(fù)制、刪除、查看大小等操作的方法
這篇文章主要介紹了PHP基于迭代實(shí)現(xiàn)文件夾復(fù)制、刪除、查看大小等操作的方法,簡(jiǎn)單說明了迭代的原理并結(jié)合實(shí)例形式分析了php采用迭代算法實(shí)現(xiàn)文件夾的復(fù)制、刪除及查看大小等常見操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-08-08Linux下進(jìn)行MYSQL編程時(shí)插入中文亂碼的解決方案
Linux下進(jìn)行MYSQL編程時(shí)插入中文亂碼的解決方案...2007-03-03Php中文件下載功能實(shí)現(xiàn)超詳細(xì)流程分析
瀏覽器發(fā)送一個(gè)請(qǐng)求,請(qǐng)求訪問服務(wù)器中的某個(gè)網(wǎng)頁(yè)(如:down.php),該網(wǎng)頁(yè)的代碼如下2012-06-06