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(). |