Error Identifier: property.abstractPrivate
Every error reported by PHPStan has an error identifier. Here’s a list of all error identifiers. In PHPStan Pro you can see the error identifier next to each error and filter errors by their identifiers.
Code example #
<?php declare(strict_types = 1);
abstract class Foo
{
abstract private int $value { get; }
}
Why is it reported? #
PHP does not allow a property to be both abstract and private. An abstract property requires subclasses to provide an implementation, but private properties are not visible to subclasses. Combining the two modifiers is contradictory and results in a compile-time error in PHP 8.4+.
How to fix it #
Change the visibility to protected or public so that subclasses can implement the abstract hook:
<?php declare(strict_types = 1);
abstract class Foo
{
- abstract private int $value { get; }
+ abstract protected int $value { get; }
}
Non-ignorable error #
This error cannot be ignored using @phpstan-ignore or the ignoreErrors configuration. Non-ignorable errors indicate code that would cause a crash or a fatal error at runtime, or a fundamental problem in the analysed code that must be addressed.
Rules that report this error #
- PHPStan\Rules\Properties\PropertyInClassRule [1]