How to implement chain calls in PHP: 1. Use magic function [_call] combined with [call_user_func] to implement; 2. Use magic function [_call] combined with [call_user_func_array] to implement; 3. Do not use magic functions 【_call】to achieve.
How to implement PHP chain call:
Method 1. Use magic function __call
is combined with call_user_func
to realize the
idea: first define a string class StringHelper, the constructor directly assigns value, and then calls the chain trim()# The ## and
strlen() functions handle the calling relationship by using
call_user_func in the called magic function
__call(). The implementation is as follows:
<?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
Method 2, use magic function __call combined with
call_user_func_array to achieve
<?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();
array_unshift(array,value1,value2,value3...)
array_unshift() The function is used to insert new elements into the array. The values of the new array will be inserted at the beginning of the array.
call_user_func() and
call_user_func_array are both methods of dynamically calling functions. The difference lies in the way parameters are passed.
Method three, do not use magic function __call to achieve
_call() to
The trim() function is enough:
public function trim($t) { $this->value = trim($this->value, $t); return $this; }
$this pointer to facilitate calling the latter function.
Related learning recommendations:
The above is the detailed content of How to implement PHP chain call?. For more information, please follow other related articles on the PHP Chinese website!