Cannot pass null argument when using type hinting

后端 未结 4 746
太阳男子
太阳男子 2020-12-04 08:09

The following code:


failed at run time:

4条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-04 08:29

    PHP 7.1 or newer (released 2nd December 2016)

    You can explicitly declare a variable to be null with this syntax

    function foo(?Type $t) {
    }
    

    this will result in

    $this->foo(new Type()); // ok
    $this->foo(null); // ok
    $this->foo(); // error
    

    So, if you want an optional argument you can follow the convention Type $t = null whereas if you need to make an argument accept both null and its type, you can follow above example.

    You can read more here.


    PHP 7.0 or older

    You have to add a default value like

    function foo(Type $t = null) {
    
    }
    

    That way, you can pass it a null value.

    This is documented in the section in the manual about Type Declarations:

    The declaration can be made to accept NULL values if the default value of the parameter is set to NULL.

提交回复
热议问题