2014年10月30日 星期四

PHP 指定 function 傳入的參數型態

PHP 的function或class的method,可以指定傳入參數的型態,但是只能指定object、interface、array、callable這4種類型。其他int、string、Resources、Traits等類型則都不能用來指定。

範例:
可指定傳入參數的類型
  1. object
    class AA{
        //...
    }
    function myTest(AA $v){
        var_dump($v);
    }
    myTest(new AA); //OK
    myTest(123); //error
  2. interface
    interface myInterface{
        //...
    }
    class AA implements myInterface{
        //...
    }
    class BB{
        //...
    }
    
    function myTest(myInterface $v){
        var_dump($v);
    }
    myTest(new AA); //OK
    myTest(new BB); //error
  3. array
    function myTest(array $v){
        var_dump($v);
    }
    myTest(array(1,2,3)); //OK
    myTest(123); //error
  4. callable (PHP5.4以上)
    function myTest(callable $v, $data){
        call_user_func($v, $data);
    }
    myTest('var_dump', 123); //OK
    myTest(123, 123); //error


其餘int、string、Resources、Traits等類型,則都不用來指定,例如 int
function myTest(int $v){
    //...
}
myTest(123); //error


參考:
PHP: Type Hinting - Manual

沒有留言:

張貼留言