Maison > développement back-end > tutoriel php > php框架 - 关于PHP类调用的一个技巧

php框架 - 关于PHP类调用的一个技巧

WBOY
Libérer: 2023-03-03 08:18:01
original
1025 Les gens l'ont consulté

像thinkPHP的PHP开发框架都会封装数据库的操作类,会出现方法调用方法的情况,如下代码:

<code>M('Test')->where(['status'=>1])->field('id,name')->select();</code>
Copier après la connexion
Copier après la connexion

这种实现方式是什么思想呢,有没有对应的具体技术名词呢?

回复内容:

像thinkPHP的PHP开发框架都会封装数据库的操作类,会出现方法调用方法的情况,如下代码:

<code>M('Test')->where(['status'=>1])->field('id,name')->select();</code>
Copier après la connexion
Copier après la connexion

这种实现方式是什么思想呢,有没有对应的具体技术名词呢?

链式调用, 通过返回$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>
Copier après la connexion

重点就是每个方法的<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>
Copier après la connexion

楼上的都说的对。我补个连接把。

<code>http://blog.csdn.net/zhengwish/article/details/51742880</code>
Copier après la connexion

链式调用 每次都返回对象

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal