>  기사  >  PHP 프레임워크  >  ThinkPHP 프레임워크 SQL 연산 체인 작성 원리(이해하기 쉬움)

ThinkPHP 프레임워크 SQL 연산 체인 작성 원리(이해하기 쉬움)

藏色散人
藏色散人앞으로
2020-08-01 13:35:462222검색

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

ThinkPHP 프레임워크 SQL 연산 체인 작성 원리(이해하기 쉬움)

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 &#39;var&#39; => string &#39;&#39; (length=0)
object(Test)[1]  
private &#39;var&#39; => string &#39;Var is change&#39; (length=13)

不难发现:我们私有变量obj->Func(),执行后,返回了一个带着$var = "Var is change"

$User->limit(10)->where(&#39;status=1&#39;)->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();?>

찾는 것은 어렵지 않습니다: 개인 변수mi>변경변형. 또한그냥is말하기i그들은math>obj->Func()는 실행 후 $var = "Var ischange"인 객체를 반환합니다.

rrreee

그렇다면 이 말은 이해하기 어렵지 않습니다. 메서드가 실행된 후 개체는 다음 메서드로 전달됩니다.

Simple Select() 구현rrreee

SummaryINSERT(),UPDATE(),DELETE()

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

위 내용은 ThinkPHP 프레임워크 SQL 연산 체인 작성 원리(이해하기 쉬움)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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