《PHP學習:PHP7匿名類用法分析》要點:
本文介紹了PHP學習:PHP7匿名類用法分析,希望對您有用。如果有疑問,可以聯系我們。
PHP學習本文實例講述了PHP7匿名類用法.分享給大家供大家參考,具體如下:
PHP學習匿名類跟匿名函數一樣,創建一次性的簡單對象
PHP學習
<?php
/**
* Created by PhpStorm.
* User: bee
* Date: 2016/4/24
* Time: 00:17
*/
echo '匿名函數';
$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 '有名函數';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);
PHP學習運行效果圖如下:
PHP學習
PHP學習匿名類被嵌套進普通 Class 后,不能訪問這個外部類(Outer class)的 private(私有)、protected(受保護)方法或者屬性. 為了訪問外部類(Outer class)protected 屬性或方法,匿名類可以 extend(擴展)此外部類. 為了使用外部類(Outer class)的 private屬性,必須通過構造器傳進來:
PHP學習
<?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
PHP學習匿名函數可以實現閉包,那么相應的匿名類也可以實現閉包
PHP學習
<?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]);
PHP學習運行效果圖如下:
PHP學習
PHP學習更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php面向對象程序設計入門教程》、《PHP網絡編程技巧總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
PHP學習希望本文所述對大家PHP程序設計有所幫助.