>  기사  >  PHP 프레임워크  >  ThinkPHP 프레임워크에서 SQL 연산의 체인 쓰기 방식 원리에 대한 간략한 분석

ThinkPHP 프레임워크에서 SQL 연산의 체인 쓰기 방식 원리에 대한 간략한 분석

藏色散人
藏色散人앞으로
2021-03-31 17:35:401946검색

다음 튜토리얼 칼럼인 thinkphp에서는 ThinkPHP 프레임워크에서 SQL 연산 체인을 작성하는 원리를 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

ThinkPHP 프레임워크에서 SQL 연산의 체인 쓰기 방식 원리에 대한 간략한 분석

소개

여러 차례 인터뷰를 해본 사람이라면 알아내기 어렵지 않지만 국내 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

연쇄 연산 방식을 통해 SQL 문의 다양한 조건에 값을 할당한 후 마지막 단계에서 SQL 문을 균일하게 처리하는 아이디어입니다. 이는 원리를 간단히 구현한 것에 불과합니다. 관심 있는 학생들은 다양한 유형의 방법 매개변수를 판단하고 조건을 보다 유연하게 할당할 수 있습니다. 예를 들어 where 메소드는 배열을 전달할 수 있습니다. 그런 다음 이 아이디어를 따라
등의 작업을 수행할 수도 있습니다. 이것은 단지 소개일 뿐입니다. 체인 쓰기에 대해 더 자세히 알고 싶다면 TP 소스 코드를 살펴보세요.

관련 추천:
최신 10개 thinkphp 비디오 튜토리얼
🎜🎜🎜

위 내용은 ThinkPHP 프레임워크에서 SQL 연산의 체인 쓰기 방식 원리에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제