체인 운영은 많은 사람들에게 신비해 보입니다. 사실 이 글을 읽고 나면 체인 운영을 점차 이해하게 될 것입니다. ThinkPHP의 핵심을 깊이 파고들어 ThinkPHP 및 기타 프레임워크의 체인 작동을 연구합니다. 한 가지만 알면 다른 것도 모두 알 수 있습니다.
ThinkPHP는 매우 강력한 커뮤니티와 실용적이고 자세한 중국어 설명서를 갖추고 있습니다. 모두가 익숙하다고 생각하는 것 중 하나는 그의 체인 쓰기 방법입니다. 체인 쓰기 방법은 SQL 작업 부하를 어느 정도 단순화합니다. 자, 어떻게 구현되나요? 객체 지향부터 시작하여 체인 작성의 구현 원리를 분석해 보겠습니다.
다음 문:
$User->limit(10)->where('status=1')->select();
코드:
객체 지향 메서드가 여러 데이터 유형을 반환할 수 있다는 것을 알고 있습니다. 물론 객체 자체도 반환할 수 있으므로 이 기능을 사용하여
<?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();
그렇다면 이 말은 이해하기 어렵지 않습니다. 메서드가 실행된 후 개체는 다음 메서드로 전달됩니다.
Simple 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}" 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(); ?>
Summary
연쇄 연산 방식을 통해 SQL 문의 다양한 조건에 값을 할당한 후 마지막 단계에서 SQL 문을 균일하게 처리하는 아이디어입니다. 이는 원리를 간단히 구현한 것에 불과합니다. 관심 있는 학생들은 다양한 유형의 방법 매개변수를 판단하고 조건을 보다 유연하게 할당할 수 있습니다. 예를 들어 where 메소드는 배열을 전달할 수 있습니다. 그런 다음 이 아이디어를 따라 INSERT(), UPDATE(), DELETE() 등과 같은 작업을 수행할 수도 있습니다. 이것은 단지 소개일 뿐입니다. 체인 쓰기에 대해 더 자세히 알고 싶다면 TP 소스 코드를 살펴보세요.
관련 추천 :
ThinkPHP 하단의 DB.php 기반 데이터베이스 캡슐화 클래스를 수정했습니다
ThinkPHP를 배웠기 때문에 ThinkPHP 하단의 DB.php 기반 데이터베이스 캡슐화 클래스를 수정했습니다. Framework, 아니, 데이터베이스 운영을 직접 보러 갔습니다...
thinkPHP WeChat 공유 인터페이스 JSSDK 예제에 대한 설명
이 글에서는 주로 thinkPHP WeChat 공유 인터페이스 JSSDK 사용법을 소개하고, thinkPHP 튜닝 형식을 분석합니다. ..
위 내용은 ThinkPHP 등 다양한 프레임워크에서 작성하는 SQL 연산 체인의 원리에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!