Quando criar o meu próprio classes em PHP devo estender stdClass?
Pergunta
Enquanto ele não é necessário para uma classe em PHP para estender explicitamente stdClass
, Eu queria saber se existe algum tipo de melhores práticas ou vantagem em fazê-lo.
Devo estender stdClass
quando declarar uma classe?
Para sua referência, veja O que é stdClass em PHP? e PHP:Objetos, Convertendo a objeto.
Solução
StdClass
é vazio e que, portanto, não ter qualquer benefício em extensão.
Você está apenas desperdiçando extend
em seu __CLASS__
˙.
php --rc StdClass
Class [ <internal:Core> class stdClass ] {
- Constants [0] {
}
- Static properties [0] {
}
- Static methods [0] {
}
- Properties [0] {
}
- Methods [0] {
}
}
A única razão para estender stdClass
é para satisfazer um typehint contra essa classe - no entanto, tal typehint nunca deve ser usado como tal, este é um ponto discutível.
Outras dicas
Nenhum
Há uma forma divertida de usar para estender stdClass:($objeto instanceof stdClass) irá retornar true e é 3x mais rápido do que is_object($objeto).Estamos a falar de um 1 microsegunda diferença, embora e infelizmente, ao menos que seja uma política rigorosa de todo o projeto, ele pode facilmente tornar-se incoerente e, portanto, mais confundindo do que ajudando.Na verdade, eu estou decepcionado ao saber que o PHP classes não estender stdClass por padrão.Teria feito sentido para mim.