Solo me pregunto si es mejor definir un constructor vacío o dejar la definición del constructor completamente en PHP? Tengo la costumbre de definir constructores con solo return true;
, incluso si no necesito que el constructor haga nada, solo por razones de finalización.PHP constructor vacío
Respuesta
Si no necesita un constructor, es mejor dejarlo sin necesidad de escribir más código. Cuando lo escribes, déjalo vacío ... regresar verdadero no tiene un propósito.
constructor siempre devuelve la instancia de la clase en la que está definida. Por lo tanto, nunca usas "return" dentro del constructor. Por último, es mejor no definirlo si no lo vas a usar.
Solo debe definir un constructor vacío si su objeto nunca se debe crear una instancia. Si ese es el caso, haga que el __construct()
sea privado.
EDIT:
respuesta anterior ya no es válida, a partir de PHP ahora se comporta igual que otros lenguajes de programación orientada a objetos. constructores no son parte de las interfaces. por lo tanto, ahora se permite a anularlos la forma que prefiera sin problemas de ningún tipo
la única excepción a esto es:
interface iTest
{
function __construct(A $a, B $b, Array $c);
}
class Test implements iTest
{
function __construct(A $a, B $b, Array $c){}
// in this case the constructor must be compatible with the one specified in the interface
// this is something that php allows but that should never be used
// in fact as i stated earlier, constructors must not be part of interfaces
}
ANTERIOR VIEJO NO-VÁLIDO-YA respuesta:
existe es una diferencia importante entre un constructor vacío y ningún constructor en absoluto
class A{}
class B extends A{
function __construct(ArrayObject $a, DOMDocument $b){}
}
VS
class A{
function __construct(){}
}
class B extends A{
function __construct(ArrayObject $a, DOMDocument $b){}
}
// error B::__construct should be compatible with A constructor
No solo eso, pero si 'A' tenía un constructor definido y' B' tenía un constructor definido, vacío, entonces esencialmente eliminarías el constructor, pero si lo dejas por completo, entonces estás heredando el padre constructor. El resultado es que no debe incluir "siempre" o "nunca" un constructor vacío, y "siempre" no significa lo mismo cuando hace una u otra. Se trata de contexto. – Jason
Existe una diferencia entre los dos: si escribe una función __construct()
vacía, sobrescribirá cualquier __construct()
heredado de una clase principal.
De modo que si no lo necesita y no desea sobrescribir el constructor principal explícitamente, no lo escriba en absoluto.
- 1. Constructor vacío o sin constructor
- 2. retorno vacío en Constructor
- 3. PHP: si! Vacío y vacío
- 4. Implementación Singleton con el constructor estático vacío
- 5. PHP trató "0" como vacío?
- 6. DataTemplate un ViewModel con un Constructor NO-Vacío?
- 7. constructor vacío cuando se crea un servicio de
- 8. PHP con el parámetro constructor
- 9. Llamar al constructor padre antes del constructor hijo en PHP
- 10. php exec() - mysqldump crea un archivo vacío
- 11. php es nulo o está vacío?
- 12. Objeto PHP isset y/o vacío
- 13. PHP vacío() en __objeto de acceso
- 14. variable de vacío define en php
- 15. ¿Cómo creo un SimpleXMLElement vacío/en blanco en PHP?
- 16. Constructor PHP para devolver un NULL
- 17. Llamando al constructor padre en PHP
- 18. ¿Cómo comprobar si el objeto JSON está vacío en PHP?
- 19. PHP - vacío $ _POST y $ _FILES - al cargar archivos más grandes
- 20. PHP $ _POST está vacío en IE9 e IIS7
- 21. php: comprueba si cierto elemento de una matriz está vacío
- 22. HTML5 Validación - PHP Formulario de acción Atributo vacío
- 23. PHP: if (! $ Val) VS if (vacío ($ val)). Hay alguna diferencia?
- 24. $ _SERVER ['PHP_AUTH_USER'] está vacío
- 25. ¿Hay alguna manera de anular el constructor vacío en una clase generada por LINQtoSQL?
- 26. ¿Cuál es el significado de tener vacío en la definición del constructor?
- 27. ¿Un constructor o destructor 'vacío' hará lo mismo que el generado?
- 28. Usando RhinoMocks, ¿cómo se burla o resuelve una clase concreta sin un constructor vacío?
- 29. ¿Por qué el argumento del tipo de mapa C++ requiere un constructor vacío cuando se usa []?
- 30. BroadcastReceiver: no se puede crear una instancia de clase; sin constructor vacío
El valor de retorno del constructor se ignora por completo. – KingCrunch
de hecho si encuentro a alguien que regresa dentro del constructor en primer lugar, nunca voy a fusionar su código con el mío. –