本文實例講述了PHP7匿名類用法。分享給大家供大家參考,具體如下:
匿名類跟匿名函數(shù)一樣,創(chuàng)建一次性的簡單對象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<?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); |
運行效果圖如下:
匿名類被嵌套進普通 Class 后,不能訪問這個外部類(Outer class)的 private(私有)、protected(受保護)方法或者屬性。 為了訪問外部類(Outer class)protected 屬性或方法,匿名類可以 extend(擴展)此外部類。 為了使用外部類(Outer class)的 private屬性,必須通過構造器傳進來:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<?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ù)可以實現(xiàn)閉包,那么相應的匿名類也可以實現(xiàn)閉包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?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程序設計有所幫助。