<?php
function a(bool $value){
var_dump($value);
}
a(true);

--------------------------------------------------------------------------------

1. php函数调用中获取变长参数的方法, ...token ,类似于golang语言中的。

2. php 中也有类似与javascript 中的 "use strict ";严格模式。

Strict typing¶

By default, PHP will coerce values of the wrong type into the expected scalar type if possible. For example, a function that is given an integer for a parameter that expects a string will get a variable of type string.

It is possible to enable strict mode on a per-file basis. In strict mode, only a variable of exact type of the type declaration will be accepted, or a TypeError will be thrown. The only exception to this rule is that an integer may be given to a function expecting a float. Function calls from within internal functions will not be affected by the strict_types declaration.

To enable strict mode, the declare statement is used with the strict_types declaration:

<?php
declare(strict_types=1); function sum(int $a, int $b) {
return $a + $b;
} var_dump(sum(1, 2));
var_dump(sum(1.5, 2.5));
?>

  3.Type declarations¶

Note:

Type declarations were also known as type hints in PHP 5.

Type declarations allow functions to require that parameters are of a certain type at call time. If the given value is of the incorrect type, then an error is generated: in PHP 5, this will be a recoverable fatal error, while PHP 7 will throw a TypeError exception.

NULLNULL

Valid types¶

Type Description Minimum PHP version
Class/interface name The parameter must be an instanceof the given class or interface name. PHP 5.0.0
self The parameter must be an instanceof the same class as the one the method is defined on. This can only be used on class and instance methods. PHP 5.0.0
The parameter must be an array. PHP 5.1.0
The parameter must be a valid callable. PHP 5.4.0
The parameter must be a boolean value. PHP 7.0.0
The parameter must be a floating point number. PHP 7.0.0
The parameter must be an integer. PHP 7.0.0
The parameter must be a string. PHP 7.0.0
iterable The parameter must be either an array or an instanceof Traversable. PHP 7.1.0

Warning

Aliases for the above scalar types are not supported(意思是: 只能用int, 而不能用integer, 只能用bool,不能用boolean.). Instead, they are treated as class or interface names. For example, using boolean as a parameter or return type will require an argument or return value that is an instanceof the class or interface boolean, rather than of type bool:

 Fatal error: Uncaught TypeError: Argument 1 passed to test() must be an instance of boolean, boolean given, called in - on line 1 and defined in -:1
 

---------------------------------------------------------------------------------------------------------------

... in PHP 5.6+¶

In PHP 5.6 and later, argument lists may include the ... token to denote that the function accepts a variable number of arguments. The arguments will be passed into the given variable as an array; for example:

10

You can also use ... when calling functions to unpack an array or Traversable variable or literal into the argument list:

3
3

You may specify normal positional arguments before the ... token. In this case, only the trailing arguments that don't match a positional argument will be added to the array generated by ....

It is also possible to add a type hint before the ... token. If this is present, then all arguments captured by ... must be objects of the hinted class.

3 days
Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2

Finally, you may also pass variable arguments by reference by prefixing the ... with an ampersand (&).