Anulación de parámetros de método en PHP: una violación de estándares estrictos
En la programación orientada a objetos, el principio de sustitución de Liskov (LSP) dicta que los objetos de un subtipo pueden reemplazar a sus objetos principales sin alterar el comportamiento del programa. Sin embargo, en PHP, anular un método con una firma de parámetro diferente se considera una violación de estándares estrictos.
¿Por qué esto es una violación?
PHP es un método débilmente tipado lenguaje, lo que significa que el compilador no puede determinar el tipo exacto de una variable en el momento de la compilación. Esto significa que cuando una clase secundaria anula un método de clase principal, el compilador no puede verificar que la nueva firma sea compatible con la original.
Como resultado, el compilador emite una advertencia estándar estricta, señalando un problema potencial que puede causar que el programa se rompa.
Considere el siguiente ejemplo:
class Foo
{
public function bar(array $bar) {}
}
class Baz extends Foo
{
public function bar($bar) {}
}
En este código, el método Baz::bar() anula el método Foo::bar() con una firma diferente. El compilador no puede determinar si la nueva firma es compatible con la original, lo que podría causar problemas en el futuro.
Alternativas a la anulación de parámetros de método
En lugar de anular métodos con diferentes firmas, existen enfoques alternativos para lograr la funcionalidad deseada:
Al seguir estas alternativas, puede evitar la violación de estándares estrictos sin dejar de lograr la funcionalidad deseada en su aplicación PHP.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3