php框架 - 關於PHP類別呼叫的一個技巧

WBOY
發布: 2023-03-03 08:18:01
原創
969 人瀏覽過

像thinkPHP的PHP開發框架都會封裝資料庫的操作類,會出現方法呼叫方法的情況,以下程式碼:

<code>M('Test')->where(['status'=>1])->field('id,name')->select();</code>
登入後複製
登入後複製

這種實現方式是什麼思想呢,有沒有對應的具體技術名詞呢?

回覆內容:

像thinkPHP的PHP開發框架都會封裝資料庫的操作類,會出現方法呼叫方法的情況,以下程式碼:

<code>M('Test')->where(['status'=>1])->field('id,name')->select();</code>
登入後複製
登入後複製

這種實現方式是什麼思想呢,有沒有對應的具體技術名詞呢?

鍊式呼叫, 透過返回$this實作.

寫demo給你:

<code class="php"><?php 
/**
 * 简单的加减法计算类
 * 
 * @author Flc <2016-11-23 19:32:26>
 */
class Calc
{
    /**
     * 结果
     * @var integer
     */
    protected $result = 0;

    /**
     * 加法
     * @param number $value 
     */
    public function add($value)
    {
        $this->result += $value;

        return $this;
    }

    /**
     * 减法
     * @param  number $value 
     */
    public function sub($value)
    {
        $this->result -= $value;

        return $this;
    }

    /**
     * 返回结果
     * @return [type] [description]
     */
    public function result()
    {
        return $this->result;
    }
}

$calc = new Calc;
echo $calc
    ->add(1)
    ->add(2)
    ->sub(1)
    ->add(11)
    ->result();</code>
登入後複製

重點就是每個方法的<code>return $this;</code>

MVC模型的原理可以去了解一下。
然後再去看下關於類別的封裝。

M('Test')其實相當於定義了一個 TestModel 的類別.

M('Test')->where(),則是呼叫該類別裡面的where方法。

主要的困難還是在於對MVC模型的實作吧。
這個是關於MVC模型實作的一個教程,可以去看一下。
https://www.shiyanlou.com/cou...

鍊式調用,返回$this就ok了,你可以參考下各種ORM框架

鍊式操作麼,每次回傳的是一個物件

鍊式操作,回傳$this,方法的呼叫

鍊式操作

<code>return $this;</code>
登入後複製

樓上的都說的對。我補個連接把。

<code>http://blog.csdn.net/zhengwish/article/details/51742880</code>
登入後複製

鍊式呼叫 每次都回傳物件

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!