php链式写法是“$tree->setAge()->setID()->setName();”,其中在php类中this指针指向类/对象本身,它就像一个绳子把类/对象和类的属性、函数连接起来。

本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑
链式写法在很多面向对象的编程语言都存在,个人简单理解就是链表,确实和链表的使用很相识。this指针是链式操作的基础。
this指针在不同的编程语言中的功能差不多,具体的小细节不一样。但是有一个基础就是指向对象/函数/类本身。基于这个基础就可以实现链式写法。
以php为例。
在php类中this指针($this)指向类/对象本身,它就像一个绳子把类/对象和类的属性、函数连接起来。并可以通过它来调用对应的相应的属性和函数(方法)。如下图所示: 
php程序的demo:
<?php
/**
* Created by PhpStorm.
* User: dell
* Date: 2017/3/31
* Time: 21:42
*/
/*
*注释的规范写法:@param [参数类型] 参数名 参数解释
* @return 返回值 [类型] 返回值名 返回值说明
*/
class Tree{
private $id ;
private $name;
private $age;
/*
*
* @param null
* @return null
*
*/
public function _construct()
{
//构造函数
}
/*
*
* @param [array] $arr 参数1
* @return null
*
*/
public function init( $arr = array() )
{
//初始化函数
$arrs = array();
//设置默认参数
$arrs = [
'id'=> 1,
'name'=> 'user',
'age' => 18
];
if( !(is_array($arr)) )
{
//如果传进来的数据不是数组则默认是id
$this->id = intval( $arr );
}
$arrs = array_merge( $arrs , $arr );//合并数组
//给类的属性赋值
$this->id = $arrs['id'];
$this->name = $arrs['name'];
$this->age = $arrs['age'];
}
/*
*
* @param [int] $data 参数1
* @return $this
*
*/
public function setID( $data = 0 )
{
//判断是不是数字
$this->id =is_numeric( $data )? $data : intval($data) ;//判断是否是数字,是赋值,否则转为数字在赋值
return $this;//返回this指针
}
/*
*
* @param [string] $data 参数1
* @return $this
*
*/
public function setName( $data = 'user' )
{
//判断是不是数字
$this->name =is_string( $data )? $data : strval($data) ;//判断是否是字符串,是赋值,否则转为字符串在赋值
return $this;//返回this指针
}
/*
*
* @param [int] data 参数1
* @return $this
*
*/
public function setAge( $data = 18 )
{
//判断是不是数字
$this->age =is_numeric( $data )? $data : intval($data) ;//判断是否是数字,是赋值,否则转为数字在赋值
return $this;//返回this指针
}
};
$tree = new Tree();
$array = array();
$array['id'] = 10;
$array['name'] = 'admin';
$array['age'] = 20;
$tree->init($array);
var_dump($tree);//打印结果
$tree->setAge()->setID()->setName();//链式写法
var_dump($tree);//在打印看链式写法是否有效
?>输出结果:

这上面这个demo中,用php类建了一棵树tree,有id和name和age。通过初始化函数init去初始化属性。然后通过链式写法来给属性赋值,最后打印结果验证是否成功。
函数/方法能实现链式写法的前提是返回值是this指针(php中return $this,js中return this,其他语言也类似)。只有这样才能实现调用这个函数后返回this指针,冲逻辑来说,此时返回的是类本身,然后接着继续调用函数,又返回this指针,如此循环。
当然各个编程语言有不同的地方,比如c++是->,php->,而js或者jq则是. ;调用的形式不同但是原理一样。
一点,有this指针,返回this指针,然后就能实现链式写法并能循环使用->fun1(return this)->fun2(return this )->fun3(return this)…… 。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Comment ouvrir le fichier php
Comment supprimer les premiers éléments d'un tableau en php
Que faire si la désérialisation php échoue
Comment connecter PHP à la base de données mssql
Comment connecter PHP à la base de données mssql
Comment télécharger du HTML
Comment résoudre les caractères tronqués en PHP
Comment ouvrir des fichiers php sur un téléphone mobile