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.