Cannot pass null argument when using type hinting
php, type-hinting
Solution
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.
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`.
Problem
The following code: ``` class Type { } function foo(Type $t) { } foo(null); ``` failed at run time: PHP Fatal error: Argument 1 passed to foo() must not be null Why is it not allowed to pass null just like other languages?