PHP实现链式操作的三种方法详解

yizhihongxing

PHP实现链式操作的三种方法详解

在PHP中,使用链式操作可以让代码看起来更加简洁,易于维护。针对于链式操作,本文将介绍三种实现方法,分别是使用普通函数、使用魔术方法和使用静态方法。

方法一:使用普通函数

使用普通函数实现链式操作,就是在每个函数的末尾都返回对象本身,这样就可以实现链式调用。

示例1:

class Chain{
    private $var;

    public function __construct($var) {
        $this->var = $var;
    }

    public function add($value) {
        $this->var += $value;
        return $this;
    }

    public function sub($value) {
        $this->var -= $value;
        return $this;
    }

    public function mul($value) {
        $this->var *= $value;
        return $this;
    }

    public function result() {
        return $this->var;
    }
}

$chain = new Chain(10);
$result = $chain->add(5)->sub(3)->mul(2)->result(); // 24

示例2:

class User{
    private $name;
    private $age;

    public function __construct($name, $age){
        $this->name = $name;
        $this->age = $age;
    }

    public function setName($name){
        $this->name = $name;
        return $this;
    }

    public function setAge($age){
        $this->age = $age;
        return $this;
    }

    public function getInfo(){
        return "Name: ".$this->name." Age: ".$this->age;
    }
}

$user = new User('Tom', 20);
$info = $user->setName('Jerry')->setAge(25)->getInfo(); // "Name: Jerry Age: 25"

## 方法二:使用魔术方法
使用魔术方法__call可以在对象中任意添加方法,灵活性更高。

### 示例1:
```php
class Demo {
    private $var;

    public function __construct($var) {
        $this->var = $var;
    }

    public function __call($name, $arguments) {
        switch ($name) {
            case 'add':
                $this->var += $arguments[0];
                return $this;
            case 'sub':
                $this->var -= $arguments[0];
                return $this;
            case 'mul':
                $this->var *= $arguments[0];
                return $this;
            case 'result':
                return $this->var;
        }
    }
}

$demo = new Demo(10);
$result = $demo->add(5)->sub(3)->mul(2)->result(); // 24

示例2:

```php
class User{
private $name;
private $age;

public function __construct($name, $age){
    $this->name = $name;
    $this->age = $age;
}

public function __call($name, $arguments) {
    if (substr($name, 0, 3) === 'set') {
        $property = strtolower(substr($name, 3));
        if (property_exists($this, $property)) {
            $this->$property = $arguments[0];
            return $this;
        }
    }
}

public function getInfo(){
    return "Name: ".$this->name." Age: ".$this->age;
}

}

$user = new User('Tom', 20);
$info = $user->setName('Jerry')->setAge(25)->getInfo(); // "Name: Jerry Age: 25"

方法三:使用静态方法

使用静态方法不需要创建对象实例,直接在类上使用方法完成操作。

示例1:

```php
class Chain{
private static $var;

public static function set($var){
    self::$var = $var;
    return new self;
}

public function add($value) {
    self::$var += $value;
    return $this;
}

public function sub($value) {
    self::$var -= $value;
    return $this;
}

public function mul($value) {
    self::$var *= $value;
    return $this;
}

public function result() {
    return self::$var;
}

}

$result = Chain::set(10)->add(5)->sub(3)->mul(2)->result(); // 24

示例2:

```php
class User{
private static $name;
private static $age;

public static function setName($name){
    self::$name = $name;
    return new self;
}

public static function setAge($age){
    self::$age = $age;
    return new self;
}

public static function getInfo(){
    return "Name: ".self::$name." Age: ".self::$age;
}

}

$info = User::setName('Jerry')->setAge(25)->getInfo(); // "Name: Jerry Age: 25"

综上所述,以上三种方法都可以实现链式操作,使用时可以根据需要选择不同的实现方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现链式操作的三种方法详解 - Python技术站

(1)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • PHP数组操作汇总 php数组的使用技巧

    PHP数组操作汇总 php数组的使用技巧 1. PHP数组简介 PHP数组是一种非常强大的数据结构,它允许我们在一个变量中存储多个值,这些值可以是不同的数据类型,如字符串、整数、布尔值等。PHP数组有三种类型:数字索引数组、关联数组和多维数组。 2. 数字索引数组的使用技巧 数字索引数组是最常用的数组类型,它使用整数键来索引数组中的值。以下是数字索引数组的基…

    PHP 2023年5月26日
    00
  • 十天学会php(2)

    我会从以下几个方面详细讲解“十天学会PHP(2)”的完整攻略: 学习目标 学习内容 学习步骤 示例说明 1. 学习目标 “十天学会PHP(2)”旨在帮助初学者深入学习PHP语言,掌握PHP常用的函数和技巧,掌握PHP面向对象编程的基础知识。 2. 学习内容 “十天学会PHP(2)”包含以下内容: PHP常用函数 PHP高级函数 PHP面向对象编程基础 3. …

    PHP 2023年5月30日
    00
  • 一个非常实用的php文件上传类

    一、概述 一个非常实用的PHP文件上传类是一种优秀的PHP文件上传类库,它支持多种文件上传方式并可自定义一些设置,使用起来十分方便。在本文中,我们将详细讲解该类库的使用方法,包括如何配置相关参数、如何实现上传文件和如何处理上传结果。 二、安装 在此之前,你需要确保已经安装了PHP,并具备一定的代码编写和文件操作经验。下载完该类库的ZIP压缩文件后,解压到你的…

    PHP 2023年5月26日
    00
  • php 信息采集程序代码

    以下是关于如何编写 PHP 信息采集程序的完整攻略。 准备工作 在编写 PHP 信息采集程序之前,需要安装 PHP(版本 5.6+ )、Apache 和 MySQL。具体如何安装这些软件,可以参考官方文档或者其他优秀的教程。 步骤一:设置所需参数 在进行信息采集之前,我们需要设置所需参数。可以通过 create_function() 函数创建一个匿名函数来实…

    PHP 2023年5月23日
    00
  • PHP 第二节 数据类型之数组

    PHP 第二节 数据类型之数组 在PHP中,数组是一种非常重要的数据类型,用于储存多个值。本节将深入介绍PHP数组的相关知识。 数组的定义 PHP数组是用于储存多个值的变量。通过在方括号中指定键名和键值来创建数组。 <?php // 创建一个数字索引数组 $number_array = array(1, 2, 3, 4, 5); // 创建一个关联数组…

    PHP 2023年5月26日
    00
  • PHP删除数组中指定下标的元素方法

    下面是详细讲解“PHP删除数组中指定下标的元素方法”的完整攻略。 方法一:使用unset()函数 PHP提供了unset()函数可以删除单个或多个数组元素。我们可以通过指定需要删除元素的下标来从数组中删除元素,例如: //定义一个数组 $array = array(‘A’, ‘B’, ‘C’, ‘D’, ‘E’); //删除下标为1的元素 ‘B’ unset…

    PHP 2023年5月26日
    00
  • PHP计算字符串真正的宽度和高度像素(图片加文字水印示例)

    下面是“PHP计算字符串真正的宽度和高度像素(图片加文字水印示例)”的完整攻略: 1. 背景描述 在实现图片加文字水印的功能时,我们通常需要计算出要添加的文字的真正宽度和高度像素,以保证文字能够正确地渲染在图片上。然而,由于不同字符的宽度和高度可能有所差异,普通的字符串长度计算方法未必能够得到准确的结果。所以,本攻略旨在介绍如何使用PHP来计算字符串的真正宽…

    PHP 2023年5月26日
    00
  • 分享50个提高PHP执行效率的技巧

    分享50个提高PHP执行效率的技巧 如果你想在开发PHP应用时提高代码执行效率,那么这50个技巧将能给你带来所需的启示。 1. 压缩输出 启用gzip压缩可以显著降低输出的大小,提高网页性能。可以通过下列方法启用gzip压缩: if (substr_count($_SERVER[‘HTTP_ACCEPT_ENCODING’], ‘gzip’)) ob_sta…

    PHP 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部