本文实例讲述了PHP7匿名类用法。分享给大家供大家参考,具体如下:
匿名类跟匿名函数一样,创建一次性的简单对象
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 '匿名函数' ; $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); |
运行效果图如下:
匿名类被嵌套进普通 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 |
匿名函数可以实现闭包,那么相应的匿名类也可以实现闭包
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程序设计有所帮助。