Home  >  Article  >  Backend Development  >  Detailed explanation of php pseudo-types

Detailed explanation of php pseudo-types

小云云
小云云Original
2018-03-02 09:37:111877browse

php pseudo-types (pseudo-types) are used in PHP documents to indicate the types and values ​​that parameters can use. Please note that they are not native types in the PHP language. Therefore, pseudo-types cannot be used for type constraints (typehint) in custom functions.

mixed

mixed indicates that a parameter can accept multiple different (but not necessarily all) types.
For example, gettype() can accept all PHP types, str_replace() can accept strings and arrays.

number

number indicates that a parameter can be integer or float.

callback

The callback pseudo-type was used before the callable type was introduced in PHP 5.4. Both have exactly the same meaning.

Some functions such as call_user_func() or usort() can accept user-defined callback functions as parameters. The callback function can not only be a simple function, but also an object method, including static class methods.
For example, the call_user_func() function can receive a user-defined function as a parameter, which is a built-in function of PHP. The callback function can not only be a function, but also a method of an object and a method of a static class. A PHP function is passed as a function name string. Any built-in or user-defined function can be passed, except language structures such as array(), echo(), empty(), eval(), exit(), isset() ,list(),print(),unset(), etc.
Refer here for examples

//call_user_func()函数用法如下:function my_callback_function(){  
        echo "my is callback function.";  
    }  

    //回调方法  
    class MyClass{  
        static function myCallbackMethod(){  
            echo "my is callback method.";  
        }  
    }  

    //num1:回调函数  
    call_user_func('my_callback_function');  

    //num2:静态类的方法  
    call_user_func(array('MyClass','myCallbackMethod'));  

    //num3:对象方法  
    $obj = new MyClass();  
    call_user_func(array($obj,'myCallbackMethod'));  

    //num4:静态类的方法(5.3.0以上)  
    call_user_func('MyClass::myCallbackMethod');  

    //num5:相对静态方法调用  
    class A {  
        public static function who(){  
            echo "A";  
        }  
    }  

    class B extends A {  
        public static function who(){  
            echo "B";  
        }  
    }  

    call_user_func(array('B','parent::who'));   //输出B  

    //num6:调用时传入参数  
    function test($a,$b){  
        echo $a;  
        echo $b;  
    }  

    call_user_function('test','1','2'); //输出1 2  

    //num7:调用类方法传入参数  
    class a(){  
        function b($c){  
            echo $c;  
        }  
    }  

    call_user_func(array('a','b'),'1'); //输出1  

    //num8:call_user_func_array与call_user_func很相似,只不过换了一种方式传递参数,让参数结构更清晰:  
    function a($b,$c){  
        echo $b;  
        echo $c;  
    }  

    call_user_func_array('a',array('1','2'));   //输出1 2  

    //num9:用call_user_func_array调用类内部方法  
    class A(){  
        function a($b,$c){  
            echo $b;  
            echo $c;  
        }  
    }  

    call_user_func_array(array('A','a'),array('1','2'));    //输出1 2
array|object

array|object means that the parameter can be either array or object.

void

void as a return type means that the return value of the function is useless. void as a parameter list means that the function does not accept any parameters.

In the function prototype, $… means etc. Use this variable name when a function can accept any number of parameters.

<?phpfunction sum(...$numbers) {
    $acc = 0;    foreach ($numbers as $n) {        $acc += $n;
    }    return $acc;
}echo sum(1, 2, 3, 4);?>

Related recommendations:

Pseudo types and pseudo variables in PHP

General parameter functions and pseudo variables of php functions Type parameter function

#Pseudo-type in PHP

The above is the detailed content of Detailed explanation of php pseudo-types. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn