PHP 8.3.4 Released!

Lista de alterações da POO

As alterações no modelo de POO do PHP são registradas aqui. Descrições e outras notas relacionadas a estes recursos estão documentadas na documentação do modelo POO.

Versão Descrição
8.1.0 Adicionado: suporte ao modificador final para constantes de classe. Além disso, as constantes de interface agora são substituíveis por padrão.
8.0.0 Adicionado: suporte ao operador nullsafe ?-> para acessar propriedades e métodos em objetos que podem ser nulos.
7.4.0 Alterado: agora é possível lançar uma exceção dentro de __toString().
7.4.0 Adicionado: suporte a covariância limitada de tipo de retorno e contravariância de tipo de argumento. O suporte completo à variância só estará disponível se o carregamento automático for usado. Dentro de um único arquivo, apenas referências de tipo não cíclicas são possíveis.
7.4.0 Adicionado: agora é possível usar tipos nas propriedades da classe.
7.3.0 Incompatibilidade: o desempacotamento de argumentos com instâncias de Traversable com chaves não-int não é mais suportado. Esse comportamento não era intencional e, portanto, foi removido.
7.3.0 Incompatibilidade: nas versões anteriores era possível separar as propriedades estáticas atribuindo uma referência. Isso foi removido.
7.3.0 Alterado: o operador instanceof agora permite literais como o primeiro operando, caso em que o resultado é sempre false.
7.2.0 Descontinuado: a função __autoload() foi descontinuada em favor da função spl_autoload_register().
7.2.0 Alterado: o seguinte nome não pode ser usado para nomear classes, interfaces ou traits: object.
7.2.0 Alterado: uma vírgula à direita agora pode ser adicionada à sintaxe de agrupamento de use para namespaces.
7.2.0 Alterado: extensão do tipo de parâmetro. Os tipos de parâmetro de métodos sobrescritos e de implementações de interface agora podem ser omitidos.
7.2.0 Alterado: métodos abstratos agora podem ser sobrescritos quando uma classe abstrata estende outra classe abstrata.
7.1.0 Alterado: os nomes a seguir não podem ser usados para nomear classes, interfaces ou traits: void e iterable.
7.1.0 Adicionado: agora é possível especificar a visibilidade das constantes de classe.
7.0.0 Defasado: chamadas estáticas a métodos que não são declarados estáticos.
7.0.0 Defasado: construtor no estilo do PHP 4. Ou seja, métodos com o mesmo nome da classe em que eles são definidos.
7.0.0 Adicionado: a declaração use de grupo: classes, funções e constantes importadas do mesmo namespace agora podem ser agrupadas em uma única declaração use.
7.0.0 Adicionado: o suporte a classes anônimas foi adicionado via new class.
7.0.0 Incompatibilidade: iterar sobre um object que não seja uma instância de Traversable agora terá o mesmo comportamento que iterar sobre arrays por referência.
7.0.0 Alterado: definir propriedades (compatíveis) em duas traits não dispara mais um erro.
5.6.0 Adicionado: o método __debugInfo().
5.5.0 Adicionado: a constante mágica ::class.
5.5.0 Adicionado: finally para manipular exceções.
5.4.0 Adicionado: traits.
5.4.0 Alterado: se uma classe abstrata definir uma assinatura para o construtor, agora ela será imposta.
5.3.3 Alterado: métodos com o mesmo nome do último elemento de uma classe com namespace não serão mais tratados como construtor. Esta alteração não afeta classes sem namespace.
5.3.0 Alterado: classes que implementam interfaces com métodos que possuem valores padrão no protótipo não precisam mais corresponder ao valor padrão da interface.
5.3.0 Alterado: agora é possível referenciar a classe usando uma variável (por exemplo, echo $nome_da_classe::CONSTANTE;). O valor da variável não pode ser uma palavra-chave (por exemplo, self, parent ou static).
5.3.0 Alterado: um erro de nível E_WARNING será emitido se os métodos mágicos de sobrecarga forem declarados estáticos. Também impõe o requisito de visibilidade pública.
5.3.0 Alterado: antes do PHP 5.3.0, as exceções lançadas na função __autoload() não podiam ser capturadas no bloco catch e resultariam em um erro fatal. Agora as exceções lançadas na função __autoload podem ser capturadas no bloco catch, com uma condição. Se uma exceção personalizada for lançada, a classe de exceção personalizada deve estar disponível. A função __autoload pode ser usada recursivamente para carregar automaticamente a classe de exceção personalizada.
5.3.0 Adicionado: o método __callStatic.
5.3.0 Adicionado: suporte a heredoc e nowdoc nas definições de constantes e propriedades de classe. Nota: os valores heredoc devem seguir as mesmas regras que strings com aspas duplas, (por exemplo, sem variáveis dentro).
5.3.0 Adicionado: Late Static Bindings.
5.3.0 Adicionado: o método __invoke().
5.2.0 Alterado: o método __toString() só era chamado quando combinado diretamente com echo ou print. Mas agora, ele é chamado em qualquer contexto de string (por exemplo, em printf() com o modificador %s), mas não em outros contextos de tipos (por exemplo, com o modificador %d). A partir do PHP 5.2.0, a conversão de objects sem um método __toString para string emitirá um erro de nível E_RECOVERABLE_ERROR.
5.1.3 Alterado: nas versões anteriores do PHP 5, o uso de var era considerado defasado e emitiria um erro de nível E_STRICT. Agora não é mais defasado, portanto não emite o erro.
5.1.0 Alterado: o método estático __set_state() agora é chamado por classes exportadas com a função var_export().
5.1.0 Adicionado: os métodos __isset() e __unset().

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top