Introduction
국내 TP들은 늘 비판을 받았지만, 인터뷰를 몇 번 해보면 알아내는 것은 어렵지 않습니다. 그러나 이는 대부분의 기업 개발에서 인기에 영향을 미치지 않습니다. 강력한 커뮤니티와 실용적이고 상세한 중국어 매뉴얼을 갖추고 있습니다. 모두가 익숙하다고 생각하는 것 중 하나는 그의 체인 쓰기 방법입니다. 체인 쓰기 방법은 SQL 작업 부하를 어느 정도 단순화합니다. 자, 어떻게 구현되나요? 객체 지향부터 시작하여 체인 작성의 구현 원리를 분석해 보겠습니다.
다음 문장
$User->limit(10)->where('status=1')->select();
로그인 후 복사
로그인 후 복사
code
우리는 객체 지향 메서드가 다양한 데이터 유형을 반환할 수 있다는 것을 알고 있습니다. 물론 객체 자체
도 반환할 수 있으므로 다음을 수행할 수 있습니다. 이 기능을 사용하여 对象自身
,所以我们可以利用这个特性来实现
<?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
= "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
= "Var ischange"
인 객체를 반환합니다. rrreee
그렇다면 이 말은 이해하기 어렵지 않습니다. 메서드가 실행된 후 개체는 다음 메서드로 전달됩니다.Simple Select() 구현rrreee
SummaryINSERT()
,UPDATE()
,DELETE()