## Deprecated Features

### PHP Core

#### Usage of dynamic properties

The creation of dynamic properties is deprecated, unless the class opts in by using the `#[\AllowDynamicProperties]` attribute. stdClass allows dynamic properties. Usage of the __get()/__set() magic methods is not affected by this change. A dynamic properties deprecation warning can be addressed by:

- Declaring the property (preferred).
- Adding the `#[\AllowDynamicProperties]` attribute to the class (which also applies to all child classes).
- Using a WeakMap if additional data needs to be associated with an object which one does not own.

#### Relative callables

Callables that are not accepted by the `$callable()` syntax (but are accepted by call_user_func()) are deprecated. In particular:

- `"self::method"`
- `"parent::method"`
- `"static::method"`
- `["self", "method"]`
- `["parent", "method"]`
- `["static", "method"]`
- `["Foo", "Bar::method"]`
- `[new Foo, "Bar::method"]`

This does not affect normal method callables such as `"A::method"` or `["A", "method"]`.

#### `"${var}"` and `"${expr}"` style interpolation

The `"${var}"` and `"${expr}"` style of string interpolation is deprecated. Use `"$var"/"{$var}"` and `"{${expr}}"`, respectively.

### MBString

Usage of the `QPrint`, `Base64`, `Uuencode`, and `HTML-ENTITIES` 'text encodings' is deprecated for all MBString functions. Unlike all the other text encodings supported by MBString, these do not encode a sequence of Unicode codepoints, but rather a sequence of raw bytes. It is not clear what the correct return values for most MBString functions should be when one of these non-encodings is specified. Moreover, PHP has separate, built-in implementations of all of them; for example, UUencoded data can be handled using convert_uuencode()/convert_uudecode().

### SPL

The internal SplFileInfo::_bad_state_ex() method has been deprecated.

### Standard

utf8_encode() and utf8_decode() have been deprecated.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open