Veraltete Features

PHP-Kern

Verwendung dynamischer Eigenschaften

Das Erstellen dynamischer Eigenschaften ist veraltet, es sei denn, die Klasse erlaubt dies mit dem Attribut #[\AllowDynamicProperties]. stdClass erlaubt dynamische Eigenschaften. Die Verwendung der magischen Methoden __get()/__set() ist von dieser Änderung nicht betroffen. Die Warnung, dass dynamische Eigenschaften veraltet sind, kann wie folgt beseitigt werden:

  • Deklarieren der Eigenschaft (empfohlen).
  • Hinzufügen des Attributs #[\AllowDynamicProperties] zur Klasse (welches auch für alle untergeordneten Klassen gilt).
  • Die Verwendung einer WeakMap, wenn zusätzliche Daten mit einem Objekt verbunden werden müssen, das einem nicht gehört.

Relative Callables

Callables, die nicht von der Syntax $callable() akzeptiert werden (aber von call_user_func()), sind veraltet. Im Besonderen:

  • "self::method"
  • "parent::method"
  • "static::method"
  • ["self", "method"]
  • ["parent", "method"]
  • ["static", "method"]
  • ["Foo", "Bar::method"]
  • [new Foo, "Bar::method"]
Dies hat keine Auswirkungen auf normale Methoden-Callables wie "A::method" oder ["A", "method"].

Interpolation im Stil von "${var}" und "${expr}"

Die Zeichenketten-Interpolation im Stil von "${var}" und "${expr}" ist veraltet. Stattdessen sollten "$var"/"{$var}" und "{${expr}}" verwendet werden.

MBString

Die Verwendung der "Textkodierungen" QPrint, Base64, Uuencode und HTML-ENTITIES ist bei allen MBString-Funktionen veraltet. Im Gegensatz zu allen anderen Textkodierungen, die von MBString unterstützt werden, kodieren diese keine Sequenz von Unicode-Codepoints, sondern eine Sequenz von rohen Bytes. Es ist daher nicht klar, was die korrekten Rückgabewerte für die meisten MBString-Funktionen sein sollten, wenn eine dieser Nicht-Kodierungen angegeben wird. Außerdem hat PHP separate, eingebaute Implementierungen für alle diese Funktionen; zum Beispiel können UU-kodierte Daten mit convert_uuencode()/convert_uudecode() verarbeitet werden.

Standard-PHP-Bibliothek (SPL)

Die interne Methode SplFileInfo::_bad_state_ex() ist veraltet.

Standard

Die Funktionen utf8_encode() und utf8_decode() sind veraltet.

add a note

User Contributed Notes 1 note

up
-9
tabflo at gmx dot at
7 months 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