PHP Velho Oeste 2024

Funcionalidades Preteridas

PHP Core

Uso de propriedades dinâmicas

A criação de propriedades dinâmicas foi preterida a menos que a classe a ative usando o atributo #[\AllowDynamicProperties]. stdClass permite propriedades dinâmicas. O uso dos métodos mágicos __get()/__set() não é afetado por essa mudança. Um aviso de descontinuação de propriedades dinâmicas pode ser abordado das seguintes maneiras:

  • Declarando a propriedade (preferido).
  • Adicionando o atributo #[\AllowDynamicProperties] à classe (que também se aplica a todas as classes filhas).
  • Usando um WeakMap se dados adicionais precisarem ser associados a um objeto ao qual não se detém posse.

Chamáveis relativos

Chamáveis que não são aceitos pela sintaxe $callable() (mas são aceitos por call_user_func()) foram preteridos. Em particular:

  • "self::method"
  • "parent::method"
  • "static::method"
  • ["self", "method"]
  • ["parent", "method"]
  • ["static", "method"]
  • ["Foo", "Bar::method"]
  • [new Foo, "Bar::method"]
Isso não afeta chamáveis de métodos normais como "A::method" ou ["A", "method"].

Estilo de interpolação "${var}" e "${expr}"

Os estilos de interpolação de string "${var}" e "${expr}" foram preteridos. Use "$var"/"{$var}" e "{${expr}}", respectivamente.

MBString

O uso das 'codificações de texto' QPrint, Base64, Uuencode, e HTML-ENTITIES foi preterido para todas as funções de MBString. Diferente das outras codificações de texto suportadas pela MBString, essas não codificam a sequência de pontos de código Unicode, mas sim uma sequência de bytes brutos. Não está claro quais deveriam ser os valores de devolução corretos para a maioria das funções de MBString quando uma dessas não-codificações é especificada. Além disso, o PHP possui implementações separadas, embutidas, para todas elas; por exemplo, dados UUencoded podem ser manipulados utilizando convert_uuencode()/convert_uudecode().

SPL

O método interno SplFileInfo::_bad_state_ex() for preterido.

Biblioteca Padrão

utf8_encode() e utf8_decode() foram preteridas.

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