In new PHP versions, deprecations are typically introduced for features or functions that will be removed or changed in future PHP versions. This is done to give developers time to update their code to be compatible with the upcoming changes. Deprecated features or functions often trigger warnings or notices in your code when used, so you can identify and address them.
To get the most up-to-date information on deprecations in PHP 8.2 or any other version check the official PHP documentation and release notes. The PHP documentation and the PHP community are excellent sources for staying informed about changes and best practices in the PHP language.
Here are some common things of PHP release with regard to deprecations:
1. Deprecated Functions and Features:
PHP may deprecate specific functions, methods, or features that are considered outdated, unsafe, or redundant. In the PHP documentation, deprecated functions are usually marked as such, along with recommendations for alternatives.
2. E_DEPRECATED Errors:
When you use deprecated features or functions in your code, PHP may generate E_DEPRECATED errors or warnings to alert you to the deprecated usage. This helps you identify and fix deprecated code in your applications.
3. Deprecated Extensions:
PHP extensions that are no longer maintained or are replaced by better alternatives may be marked as deprecated. Developers are encouraged to migrate to alternative extensions or solutions.
4. Upgrade Guides:
When a new PHP version is released with significant deprecations, the PHP community often provides upgrade guides that explain how to modify your code to be compatible with the new version.
5. Deprecated Configuration Options:
Certain configuration options or settings may be deprecated, and it’s important to update your configuration accordingly.
6. Deprecation Timeline:
PHP typically follows a deprecation timeline, giving developers multiple versions to update their code before the deprecated feature is removed entirely. This allows for a smoother transition for existing projects.
Deprecate Dynamic Properties (and New Attribute)
Up until PHP 8.1, you could dynamically set and retrieve undeclared class properties in PHP. For example:
class Post {
private int $pid;
}
$post = new Post();
$post->name = ‘Kinsta’;
From PHP 8.2 onwards, dynamic properties are deprecated. Setting a value to an undeclared class property will emit a deprecation notice the first time the property is set.
classFoo
{}
$foo=
new
Foo;
// Deprecated: Creation of dynamic property Foo::$bar is deprecated
$foo->bar=
1;
// No deprecation warning: Dynamic property already exists.
$foo->bar=
2;
However, from PHP 9.0 onwards, setting the same will throw an error eception.
if you want to stop these deprecation notices after upgrading to PHP 8.2, you can use PHP 8.2’s new attribute to allow dynamic properties on classes.
#[AllowDynamicProperties]
classPets
{}
classCats
extends
Pets
{}
// You'll get no deprecation warning
$obj=
new
Pets;
$obj->test=
1;
// You'll get no deprecation warning for child classes
$obj=
new
Cats;
$obj->test=
1;
You should also note that, in PHP 8.2, the only bundled class marked as #[AllowDynamicProperties]
is stdClass
. Furthermore, any properties accessed through __get()
or __set()
PHP magic methods are not considered dynamic properties, so that they won’t throw a deprecation notice.