¿Cuál es la diferencia entre anular y sobrecargar una función en PHP, con un simple ejemplo?

Como PHP es un lenguaje dinámico, no realiza la sobrecarga como se esperaba en lenguajes estáticamente tipados como Java o C ++. Las respuestas anteriores son para Java, mientras que PHP se comporta un poco diferente.

Según la definición de PHP:

La sobrecarga en PHP proporciona medios para “crear” dinámicamente propiedades y métodos. Estas entidades dinámicas se procesan mediante métodos mágicos que uno puede establecer en una clase para varios tipos de acciones.

Ejemplo de sobrecarga básica:

  sobrecarga de funciones ($ tmp) {
     if (gettype ($ tmp) === "string") echo "Tienes una cadena: $ {tmp}";
     if (gettype ($ tmp) === "integer") echo "Obtuviste un número: $ {tmp}";
     if (gettype ($ tmp) === "double") echo "Tienes un doble: $ {tmp}";
 }

 sobrecarga ("Adán y Eva");  // salidas "Tienes una cadena: Adán y Eva"
 sobrecarga (3.14);  // salidas "Tienes un doble: 3.14"
 sobrecarga (1);  // salidas "Tienes un número: 1"

Ejemplo de anulación básica:

  clase TestParent {
     función pública f1 () {echo 1;  }
     función pública f2 () {echo 2;  }
 }

 clase TestChild extiende TestParent {
     public function f2 () {echo "Función f2 anulada en clase secundaria";  }
 }

 $ tc = nuevo TestChild;
 $ tc-> f2 ();  // genera "Función f2 anulada en clase secundaria"

Aunque el ejemplo anterior de sobrecarga está un poco inventado, puede analizar en profundidad la fuente original de php.net aquí:

http://php.net/manual/en/language.oop5.overloading.php

Otros recursos que puede encontrar útiles para mayor claridad y autenticidad / validez:

  1. http://stackoverflow.com/questio…
  2. http: //programmers.stackexchange…

Gracias, feliz codificación 🙂

Ver más aquí: sobrecarga de métodos y anulación de métodos

Sobrecarga y anulación es el concepto de OOPS. Cualquier lenguaje de programación que use Concept sigue siendo el mismo. A continuación se muestran mis 2 centavos sobre este concepto de manera simple

La sobrecarga de métodos se refiere al concepto que define una o más funciones o métodos con el mismo nombre con diferentes longitudes de parámetros o tipos de parámetros. Entonces, las funciones se diferencian por su firma o parámetros.

Ejemplo de sobrecarga de métodos

  // Sobrecarga
 prueba de clase pública
 {
     public void getStuff (int id)
     {}
     public void getStuff (nombre de cadena)
     {}
 }

Método OverRiding es un concepto totalmente diferente en comparación con el método de sobrecarga. La anulación del método se refiere a la redefinición de la función que corresponde a alguna otra clase y se accede mediante la herencia.

El concepto de anulación de método depende de dos palabras clave: virtual y anulación

En un escenario simple para explicar el método, anular el ejemplo con un ejemplo es Supongamos que tenemos una clase base con la función Sample () en la clase base, luego la clase Oher que se derivó de esa clase base puede redefinir la funcionalidad de esa función Sample () se refiere al concepto del método OverRiding.

Ejemplo1 para el método OverRiding

  clase BC
 {
   Pantalla virtual pública vacía ()
   {
      System.Console.WriteLine ("BC :: Display");
   }
 }

 clase DC: BC
 {
   Anulación pública anular Display ()
   {
      System.Console.WriteLine ("DC :: Display");
   }
 }

 Demo de clase
 {
   público estático vacío Main ()
   {
      BC b;
      b = nuevo BC ();
      b.Display ();    

      b = nuevo DC ();
      b.Display ();    
   }
 }

Salida

  BC :: Display
 DC :: Pantalla 

Ejemplo1 para el método OverRiding

  //Primordial
 prueba de clase pública
 {
         getStuff virtual público (id de int)
         {
             // Obtener la ubicación predeterminada de las cosas
         }
 }

 prueba de clase pública2: prueba
 {
         anulación pública getStuff (int id)
         {
             //base.getStuff(id);
             // o - Obtener cosas nueva ubicación
         }
 }