Starting with PHP 8.2, you can use true
as a standalone type, which allows you to add typehint to the following:
- Class Properties;
- Function/method arguments;
- Function/method return types.
For example:
class Foo { private true $bar; // ... }
// PHP 8.2+ function foo(true $arg) { // ... } foo(true);
// PHP 8.2+ function foo(): true { return true; }
It is possible to use it to make the bool
type narrower (or more specific). For example, you could do it in a :
class User { public function canEdit(): bool { // ... return $isAllowed; } } class Admin extends User { public function canEdit(): true { return true; } }
Please note that the true
type does not allow the following:
Coercion Is Not Allowed
The true
type does not coerce values of other types to true
.
For example, if you return an int
1
instead of true
from a function that has the true
type specified as the return type, then it will throw an error:
// PHP 8.2+
function foo(): true {
// Fatal error: Uncaught TypeError: foo(): Return value must be of type true, int returned
return 1;
}
foo();
Union of bool|true
Is Not Allowed
If you specify bool|true
(or true|bool
), PHP would throw the following compile time error:
// PHP 8.2+
// Fatal error: Duplicate type true is redundant
function foo(): bool|true {
// ...
}
Union of true|false
Is Not Allowed
If you specify true|false
(or false|true
) instead of bool
, PHP will throw the following compile time error:
// PHP 8.2+
// Fatal error: Type contains both true and false, bool should be used instead
function foo(): true|false {
// ...
}
This post was published by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.