소개
여러 차례 인터뷰를 해본 사람이라면 알아내기 어렵지 않지만 국내 TP는 항상 비판을 받아왔습니다. . 그러나 이는 대부분의 기업 개발에서 인기에 영향을 미치지 않습니다. 강력한 커뮤니티와 실용적이고 상세한 중국어 매뉴얼을 갖추고 있습니다. 모두가 익숙하다고 생각하는 것 중 하나는 그의 체인 쓰기 방법입니다. 체인 쓰기 방법은 SQL 작업 부하를 어느 정도 단순화합니다. 자, 어떻게 구현되나요? 객체 지향부터 시작하여 체인 작성의 구현 원리를 분석해 보겠습니다.
다음 명령문
$User->limit(10)->where('status=1')->select();
Code
우리는 객체 지향 메서드가 여러 데이터 유형을 반환할 수 있다는 것을 알고 있습니다. 물론 객체 자체
를 반환할 수도 있으므로 이 기능을 사용할 수 있습니다. Achieve 对象自身
,所以我们可以利用这个特性来实现
<?php class Test{ private $var = ""; public function Func(){ $this->var = "Var is change"; return $this; } } $obj = new Test(); var_dump($obj); var_dump($obj->Func());
打印出来的结果:
object(Test)[1] private 'var' => string '' (length=0) object(Test)[1] private 'var' => string 'Var is change' (length=13)
不难发现:我们私有变量$var发生了改变。也就是说,我们$obj->Func(),执行后,返回了一个带着$var
= "Var is change"
$User->limit(10)->where('status=1')->select();인쇄된 결과:
<?php class UserModel{ private $field ="*"; private $tableName =""; private $where =""; private $order =""; private $limit =""; function field($field){ $this->field = $field; return $this; } function table($tableName){ $this->table = $tableName; return $this; } function order($order){ $this->order = "ORDER BY ".$order; return $this; } function where($where){ $this->where = "WHERE ".$where; return $this; } function limit($index, $limit = 0){ $this->limit = "LIMIT ".$index; if($limit){ $this->limit.= ",{$limit}"; } return $this; } function select(){ if(empty($this->tableName)){ $this->tableName = str_replace("Model", "", __CLASS__);//如果表名不指定,则获取类名 } $selectSql ="SELECT {$this->field} FROM `{$this->tableName}` {$this->where} {$this->order} {$this->limit}"; //构造SQL语句模版串 echo $selectSql; //return mysql_query($selectSql); 执行拼接后的SQL语句 } } $user = new UserModel(); $user->where("`user` = 1")->order("`user` DESC")->limit(5)->select(); ?>찾기는 어렵지 않습니다. 개인 변수 $var가 변경되었습니다. 즉, $obj->Func()는 실행 후
$var
= "Var ischange"
인 개체를 반환합니다. rrreee
그렇다면 이 말은 이해하기 어렵지 않습니다. 메서드가 실행된 후 개체는 다음 메서드로 전달됩니다. Simple Select() 구현rrreeeINSERT()
,UPDATE()
,DELETE()
Summary