Ver Mensaje Individual
  #5 (permalink)  
Antiguo 16/05/2014, 19:31
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: me dijeron que en php la sobre carga y la sobre escritura no existen

@jor_0203 : dar ejemplos aca seria de otros lenguajes ya que PHP no tiene esas "features" pero intentemos.....

- Sobrecarga de operadores:


Código PHP:
<?php
include "sobrecarga.php";

/*
   Multiplicaciones de vectores
*/

$a = [2,3,6];
$b = [1,8];

var_dump($a $b);
Suponiendo que en sobrecarga.php se hiciera la sobrecarga de operadores (de forma similar a como explican aca), en este caso el '*', el resultado seria poder multiplicar vectores, dando una matriz de 3x2


- Polimorfismo de metodos a nivel de parametros (numero y tipo) sin herencia:
(con esto quiero decir que no sean las clases descendientes las que implementan variaciones)

Código PHP:
Ver original
  1. <?php
  2.  
  3. Class Algo
  4. {
  5.  
  6.     public function metodo ($param1,$param2)
  7.     { // ... }
  8.  
  9.     public function metodo (int $param1)
  10.     { // ... }
  11.  
  12.     public function metodo (string $param1, int $param2, array $param3)
  13.     { // ... }
  14.  
  15. }

Notas que el metodo siempre se llama igual (metodo) ? bueno segun el numero de parametros y el tipo. cuando invocas a metodo() se mete en una "version" u otra de metodo()

En PHP no puedes ni en sueños hacer eso porque con parametros opcionales puedes hacer "algo" pero llegas a emular ese comportamiento y las interfaces de PHP son muyyy rigidas tambien.

Mira un ejemplo en JAVA para que veas no estoy "inventado":


Código Java:
Ver original
  1. class Overload
  2. {
  3.     void demo (int a)
  4.     {
  5.        System.out.println ("a: " + a);
  6.     }
  7.     void demo (int a, int b)
  8.     {
  9.        System.out.println ("a and b: " + a + "," + b);
  10.     }
  11.     double demo(double a) {
  12.        System.out.println("double a: " + a);
  13.        return a*a;
  14.     }
  15. }
  16. class MethodOverloading
  17. {
  18.     public static void main (String args [])
  19.     {
  20.         Overload Obj = new Overload();
  21.         double result;
  22.         Obj .demo(10);
  23.         Obj .demo(10, 20);
  24.         result = Obj .demo(5.5);
  25.         System.out.println("O/P : " + result);
  26.     }
  27. }

Nota que el numero de parametros y tipo son disntintos en demo() ... eso se resuelve en tiempo de "compilacion", pero en PHP por ahora se trabaja como interprete......asi que esas cosas son un poco dificiles de lograr
__________________
Salu2!

Última edición por Italico76; 16/05/2014 a las 21:17