本文分析了CodeIgniter连贯操作的底层原理。分享给大家供大家参考,具体如下:
php oop连贯操作原理
->符号其实是传递对象指针的。或许这么说是不对的。
但是,我们可以这么的理解。
不多说。放代码。
普通用法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php class test { public $a = '' ; public $b = '' ; public function actiona() { $this ->a= "hello" ; return $this ; } public function actionb() { $this ->b= "world" ; return $this ; } public function actionc() { echo $this ->a. " " . $this ->b; } } $oktest = new test(); $oktest ->actiona(); $oktest ->actionb(); $oktest ->actionc(); ?> |
连贯用法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?php class test { public $a = '' ; public $b = '' ; public function actiona() { $this ->a= "hello" ; return $this ; } public function actionb() { $this ->b= "world" ; return $this ; } public function actionc() { echo $this ->a. " " . $this ->b; } } $oktest = new test(); $oktest ->actiona()->actionb()->actionc(); ?> |
看到了没有。
连起来了。可以把操作串起来。
看起来直观多了。阅读代码时也轻松了很多。
类里面操作都返回了一个指针。
$this.
他等价于你初始化的那个对象 $oktest
所以下面的操作可以连续起来。
试着去掉每个操作里的
1
|
return $this |
你将会看到错误提示。
例子:
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 class sql{ public $select ; public $from ; public $where ; public $order ; public $limit ; public function from( $_from = 'FROM test' ) { $this ->from= $_from ; return $this ; } public function where( $_where = 'WHERE 1=1' ) { $this ->where= $_where ; return $this ; } public function order( $_order = 'ORDER BY id DESC' ) { $this ->order= $_order ; return $this ; } public function limit( $_limit = 'LIMIT 0,30' ) { $this ->limit= $_limit ; return $this ; } public function select( $_select = 'SELECT *' ) { $this ->select= $_select ; return $this ->select. " " . $this ->from. " " . $this ->where. " " . $this ->order. " " . $this ->limit; } } $sql = new sql(); echo $sql ->from()->where()->order()->limit()->select(); ?> |
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。