website/errors/smaller.invalid.md
<?php declare(strict_types = 1);
function doFoo(\stdClass $object, int $number): void
{
if ($object < $number) {
// ...
}
}
The < (less than) comparison is used between types that cannot be meaningfully compared, resulting in a TypeError at runtime. Since PHP 8.0, comparing incompatible types with relational operators (<, >, <=, >=) throws a TypeError. In this example, comparing a \stdClass object with an int is not a valid operation.
Compare values of compatible types. Extract a comparable value from the object first:
<?php declare(strict_types = 1);
function doFoo(\stdClass $object, int $number): void
{
- if ($object < $number) {
+ if ($object->value < $number) {
// ...
}
}
Or ensure both operands have comparable types:
<?php declare(strict_types = 1);
-function doFoo(\stdClass $object, int $number): void
+function doFoo(int $a, int $number): void
{
- if ($object < $number) {
+ if ($a < $number) {
// ...
}
}