Устаревшая функциональность

Ядро PHP

Использование динамических свойств

Создание динамических свойств объявлено устаревшим, за исключением, если класс не обрабатывает их использование с помощью атрибута #[\AllowDynamicProperties]. На экземплярах stdClass по-прежнему можно использовать динамические свойства. Изменение не влияет на использование магических методов __get()/__set(). Предупреждение об устаревании динамических свойств можно устранить с помощью:

  • Объявления свойства (лучше всего).
  • Добавления атрибута #[\AllowDynamicProperties] к классу (который также применяется ко всем дочерним классам).
  • Использования WeakMap, если необходимо связать дополнительные данные с объектом, который не принадлежит пользователю.

Вызовы методов с относительным именем

Вызываемые методы, не соответствующие синтаксису $callable() (но работают с call_user_func()), объявлены устаревшими. В частности:

  • "self::method"
  • "parent::method"
  • "static::method"
  • ["self", "method"]
  • ["parent", "method"]
  • ["static", "method"]
  • ["Foo", "Bar::method"]
  • [new Foo, "Bar::method"]
Это изменение не влияет на обычные вызываемые методы, такие как "A::method" или ["A", "method"].

Интерполяция вида "${var}" и "${expr}"

Стиль интерполяции строк "${var}" и "${expr}" объявлен устаревшим. Используйте "$var"/"{$var}" и "{${expr}}" соответственно.

MBString

Использование кодировок текста QPrint, Base64, Uuencode и HTML-ENTITIES объявлено устаревшим для всех функций MBString. В отличие от остальных текстовых кодировок, поддерживаемых MBString, эти кодировки не кодируют последовательность кодовых точек Unicode, а только последовательность необработанных байтов. Неясно, какими должны быть правильные возвращаемые значения для большинства функций MBString, если указана одна из этих кодировок. Более того, в PHP есть встроенные реализации всех этих кодировок; например, UU-закодированные данные можно обрабатывать с помощью функций convert_uuencode()/convert_uudecode().

SPL

Внутренний метод SplFileInfo::_bad_state_ex() объявлен устаревшим.

Стандартные функции

Функции utf8_encode() и utf8_decode() объявлены устаревшими.

add a note add a note

User Contributed Notes 1 note

up
-3
tabflo at gmx dot at
1 year ago
a have a baseclass for all databasemodels and handle my dynamic property setter and getter this way:

    public array $dynamicProperties = [];

    public function __set(string $name, mixed $value) {
        if(property_exists($this, $name))
            $this->{$name} = $value;
        else
            $this->dynamicProperties[$name] = $value;
    }
   
    public function __get(string $name) {
        if(property_exists($this, $name))
            return $this->$name;
        else
            return $this->dynamicProperties[$name];
    }

just put the content into a class and extend from it. enjoy :)
To Top