<?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 (&).