이 글에서는 체인 연산을 구현하기 위한 PHP의 세 가지 방법을 주로 소개하고, PHP 체인 연산의 관련 구현 기술과 사용 주의 사항을 예제 형식으로 분석합니다. 도움이 필요한 친구들은 참고할 수 있습니다
자세한 내용은 다음과 같습니다.
PHP에는 많은 문자열 함수가 있습니다. 예를 들어 먼저 문자열 끝의 공백을 필터링한 다음 해당 길이를 찾아야 합니다. 일반적인 작성 방법은 다음과 같습니다. 예를 들어, 다음과 같이 js와 유사한 체인 작업을 구현하고 싶습니다.
strlen(trim($str))
다음은 구현하는 세 가지 방법입니다.
방법 1. call_user_func와 결합된 매직 함수 __call을 사용하여
먼저 문자열 클래스 StringHelper, 생성자 할당을 정의합니다. 값을 직접 호출한 다음 체인에서 Trim() 및 strlen() 함수를 호출하고 호출 관계를 처리하기 위해 호출된 마법 함수 __call()에서 call_user_func를 사용합니다. 구현은 다음과 같습니다.
$str->trim()->strlen()
터미널 실행 스크립트:
<?php class StringHelper { private $value; function __construct($value) { $this->value = $value; } function __call($function, $args){ $this->value = call_user_func($function, $this->value, $args[0]); return $this; } function strlen() { return strlen($this->value); } } $str = new StringHelper(" sd f 0"); echo $str->trim('0')->strlen();
php test.php 8
지침:
array_unshift()
함수는 배열에 새 요소를 삽입하는 데 사용됩니다. 새 배열의 값은 배열의 시작 부분에 삽입됩니다. call_user_func()
및 call_user_func_array
는 모두 동적으로 함수를 호출하는 방법입니다. 차이점은 매개변수가 전달되는 방식에 있습니다.
방법 3,
을 달성하기 위해 마법 함수 __call을 사용하지 마세요._call()
을 trim()
함수로 수정하세요. array_unshift()
函数用于向数组插入新元素。新数组的值将被插入到数组的开头。
call_user_func()
和call_user_func_array
都是动态调用函数的方法,区别在于参数的传递方式不同。
方法三、不使用魔法函数__call来实现
只需要修改_call()
为trim()
<?php class StringHelper { private $value; function __construct($value) { $this->value = $value; } function __call($function, $args){ array_unshift($args, $this->value); $this->value = call_user_func_array($function, $args); return $this; } function strlen() { return strlen($this->value); } } $str = new StringHelper(" sd f 0"); echo $str->trim('0')->strlen();
핵심은 $this 포인터를 반환하여 후자의 함수 호출을 용이하게 하는 것입니다.
관련 권장 사항:
위 내용은 PHP에서 체인 작업을 구현하는 세 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!