首頁  >  文章  >  後端開發  >  php偽類型詳解

php偽類型詳解

小云云
小云云原創
2018-03-02 09:37:111877瀏覽

php偽類型(pseudo-types) 是 PHP 文件裡用來指示參數可以使用的型別和值。 請注意,它們不是 PHP 語言裡原生型別。 所以不能把偽類型用於自訂函數裡的型別約束(typehint)。

mixed

mixed 說明一個參數可以接受多種不同的(但不一定是所有的)類型。
例如 gettype() 可以接受所有的 PHP 類型,str_replace() 可以接受字串和陣列。

number

number 說明一個參數可以是 integer 或 float。

callback

在 PHP 5.4 引入 callable 類型之前使用 了 callback 偽類型。二者意義完全相同。

有些函數如 call_user_func() 或 usort() 可以接受使用者自訂的回呼函數作為參數。回呼函數不只可以是簡單函數,還可以是物件的方法,包括靜態類別方法。
例如call_user_func()函數就可接收使用者自訂的函數作為一個參數,他是php的內建函數。 callback函數不但可以是一個函數,也可以是一個物件的方法,靜態類別的方法也可以。一個php函數用函數名稱字串來傳遞,可以傳遞任何內建的或使用者自訂的函數,除了語言結構例如array(),echo(),empty(),eval(),exit(),isset() ,list(),print(),unset()等。
範例參考這裡

//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 意思是參數可以是 array 也可以是 object。

void

void 作為傳回類型意味著函數的傳回值是無用的。 void 作為參數列表表示函數不接受任何參數。

在函數原型中,$… 表示等等的意思。當一個函數可以接受任意個參數時使用此變數名。

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

相關推薦:

PHP中的偽類型和偽變數

php函數之常規參數函數和偽類型參數函數

PHP中的偽類型

以上是php偽類型詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn