PHP Velho Oeste 2024

Fonctionnalités obsolètes

PHP Core

Utilisation des propriétés dynamiques

La création de propriétés dynamiques est obsolète, à moins que la classe ne l'autorise en utilisant l'attribut #[\AllowDynamicProperties]. stdClass autorise les propriétés dynamiques. L'utilisation des méthodes magiques __get()/__set() n'est pas affectée par ce changement. L'avertissement d'obsolescence des propriétés dynamiques peut être adressé en :

  • Déclarant la propriété (préférable).
  • Ajoutant l'attribut #[\AllowDynamicProperties] à la classe (qui s'applique également à toutes les classes enfants).
  • Utilisant un WeakMap si des données supplémentaires doivent être associées à un objet dont on n'est pas propriétaire.

Callables relatifs

Les callables qui ne sont pas acceptés par la syntaxe $callable() (mais qui sont acceptés par call_user_func()) sont obsolètes. En particulier :

  • "self::method"
  • "parent::method"
  • "static::method"
  • ["self", "method"]
  • ["parent", "method"]
  • ["static", "method"]
  • ["Foo", "Bar::method"]
  • [new Foo, "Bar::method"]
Cela n'affecte pas les callables de méthode normaux tels que "A::method" ou ["A", "method"].

Interpolation de style "${var}" et "${expr}".

Les styles d'interpolation de chaîne "${var}" et "${expr}" sont obsolètes. Utilisez respectivement "$var"/"{$var}" et "{${expr}}".

MBString

L'utilisation des formats QPrint, Base64, Uuencode et HTML-ENTITIES est obsolète pour toutes les fonctions MBString. Contrairement à tous les autres encodages de texte supportés par MBString, ceux-ci n'encodent pas une séquence de points de code Unicode, mais plutôt une séquence d'octets bruts. Les valeurs de retour de la plupart des fonctions MBString ne sont pas claires lorsqu'un de ces non-encodages est spécifié. De plus, PHP a des implémentations distinctes pour chacun d'entre eux ; par exemple, les données UUencoded peuvent être gérées en utilisant convert_uuencode()/convert_uudecode().

SPL

La méthode interne SplFileInfo::_bad_state_ex() a été rendue obsolète.

Standard

utf8_encode() et utf8_decode() ont été rendues obsolètes.

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