本文分析了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程序设计有所帮助。