PHP 체인 작성이란 무엇입니까?

藏色散人
풀어 주다: 2023-03-09 21:06:02
원래의
3156명이 탐색했습니다.

PHP 체인 쓰기는 "$tree->setAge()->setID()->setName();"입니다. 여기서 PHP 클래스에서 이 포인터는 클래스/객체 자체를 가리키며 마치 밧줄과 같습니다. 핸들 클래스/객체는 클래스의 속성 및 함수에 연결됩니다.

PHP 체인 작성이란 무엇입니까?

이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

체인 작성 방법은 많은 객체 지향 프로그래밍 언어에 존재합니다. 실제로 연결 목록의 사용에 매우 익숙합니다. this 포인터는 연결된 작업의 기초입니다.
이 포인터는 다른 프로그래밍 언어에서 비슷한 기능을 가지고 있지만 구체적인 세부 사항은 다릅니다. 하지만 객체/함수/클래스 자체를 가리키는 근거가 있습니다. 이를 바탕으로 Chain Writing을 구현할 수 있습니다.
PHP를 예로 들어보겠습니다.
PHP 클래스에서 this 포인터($this)는 클래스/객체 자체를 가리킵니다. 이는 클래스/객체를 클래스의 속성 및 함수와 연결하는 밧줄과 같습니다. 그리고 이를 사용하여 해당 속성과 함수(메서드)를 호출할 수 있습니다. 아래 그림과 같이:
PHP 체인 작성이란 무엇입니까?

php 프로그램의 데모:

<?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 = [
            &#39;id&#39;=> 1,
            &#39;name&#39;=> &#39;user&#39;,
            &#39;age&#39; => 18
        ];
        if( !(is_array($arr)) )
        {
        //如果传进来的数据不是数组则默认是id
            $this->id = intval( $arr );
        }
        $arrs = array_merge( $arrs , $arr );//合并数组
        //给类的属性赋值
        $this->id = $arrs[&#39;id&#39;];
        $this->name = $arrs[&#39;name&#39;];
        $this->age = $arrs[&#39;age&#39;];
    }
    /*
 *
 * @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 = &#39;user&#39; )
    {
        //判断是不是数字
        $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[&#39;id&#39;] = 10;
$array[&#39;name&#39;] = &#39;admin&#39;;
$array[&#39;age&#39;] = 20;
$tree->init($array);
var_dump($tree);//打印结果
$tree->setAge()->setID()->setName();//链式写法
var_dump($tree);//在打印看链式写法是否有效
?>
로그인 후 복사

출력 결과:

PHP 체인 작성이란 무엇입니까?

위의 데모에서는 ID, 이름, 나이와 함께 PHP 클래스를 사용하여 트리가 구축되었습니다. 초기화 함수 init를 통해 속성을 초기화합니다. 그런 다음 체인 쓰기를 통해 속성에 값을 할당하고 마지막으로 결과를 인쇄하여 성공 여부를 확인합니다.
함수/메서드가 체인 쓰기를 달성할 수 있다는 전제는 반환 값이 이 포인터라는 것입니다(php에서는 $this를 반환하고, js에서는 이것을 반환하며, 다른 언어에서는 유사합니다). 이 방법으로만 이 함수를 호출한 후 this 포인터를 반환할 수 있습니다. 논리적으로 말하면 이때 반환되는 것은 클래스 자체이며, 계속해서 함수를 호출하고 this 포인터를 반환하는 식입니다.
물론 프로그래밍 언어마다 차이가 있습니다. 예를 들어 c++는 ->, php->이고, js나 jq는 호출 형식은 다르지만 원리는 동일합니다.

한 가지, 이 포인터가 있는데, 이 포인터를 반환하면 체인 쓰기를 실현할 수 있고 순환적으로 사용할 수 있습니다 ->fun1(return this)->fun2(return this)->fun3(return this )....

위 내용은 PHP 체인 작성이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿