Diferencia entre revisiones de «Plantilla:PHP/SintasixPHPOOP»
De WikiEducator
Línea 574: | Línea 574: | ||
foreach ($argumentos as $param => $valor){ | foreach ($argumentos as $param => $valor){ | ||
− | + | echo "parámetro <strong>$param</strong> = <strong>".print_r($valor, true). | |
+ | "</strong> <br />"; | ||
+ | //Poner en print_r el segundo parámetro a true, hace que esa función en lugar de imprimir, retorna el valor. | ||
} | } | ||
} | } | ||
Línea 598: | Línea 600: | ||
===Sobrecarga=== | ===Sobrecarga=== | ||
− | Un concepto muy importante | + | Un concepto muy importante y básico en la programación orientada a objetos. |
− | + | ||
− | *Sin embargo este aspecto en php no es del todo intuitivo. No existe la sobrecarga como la entendemos en otros lenguajes | + | La sobrecarga es una concreción del principio de '''polimorfismo''' |
+ | {{MMF_Definicion|Title=polimorfismo| | ||
+ | *Podemos tener varios métodos con el mimos nombre, pero diferente número de parámetros o con parámetros de difernte tipo | ||
+ | *El tiempo de ejecución se ejecutará uno u otro en función de los parámetros reales que pasemos en la invocación del método}} | ||
+ | *Sin embargo este aspecto en php no es del todo intuitivo. No existe la sobrecarga como la entendemos en otros lenguajes. | ||
*No obstante tenemos técnicas para poder simular la sobrecarga. | *No obstante tenemos técnicas para poder simular la sobrecarga. | ||
− | *Muchas veces es fundamental | + | *Muchas veces es fundamental. Especialmente importante a la hora de sobrecargar el constructor de la clase. |
*Vamos a ver como podemos implementar la sobrecarga en php | *Vamos a ver como podemos implementar la sobrecarga en php | ||
+ | *Para simular la sobrecarga jugamos con el concepto de que una variable que no tenga valor se considera de tipo null | ||
+ | *A coninuación una serie de ejemplos para dejar claro este concepto | ||
+ | *Tomamos como ejemplo una función | ||
+ | {{MRM_Ejemplo| | ||
+ | <source lang=php> | ||
+ | function verTipoParametros($a,$b,$c){ | ||
+ | echo "Primer parámetro "; | ||
+ | var_dump($a); | ||
+ | echo "Segundo parámetro "; | ||
+ | var_dump($b); | ||
+ | echo "Tercer parámetro "; | ||
+ | var_dump($c); | ||
+ | } | ||
+ | </source> | ||
+ | }}<br /> | ||
+ | |||
+ | *Ahora la invocamos de diferente manera y vemos el resultado | ||
+ | {{MRM_Ejemplo|Title=Invocar sin parámetros reales | ||
+ | <source lang=php> | ||
+ | echo "Invocando a <strong>verTipoParametros ()</strong><hr / />"; | ||
+ | verTipoParametros (); | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | *A pesar de que tiene tres parámetros, la invacamos sin parámetros | ||
+ | *El resultado será que cada parámetro al ejecutar la función será de tipo null con valor null (es un tipo válido en php | ||
+ | [[Imagen:funcionSinParametrosReales.png]] | ||
+ | }} | ||
+ | |||
+ | {{MRM_Ejemplo|Title=Invocar con 1 parámetro real | ||
+ | <source lang=php> | ||
+ | ... | ||
+ | echo "Invocando a <strong>verTipoParametros (5)</strong><hr />"; | ||
+ | verTipoParametros (5); | ||
+ | ... | ||
+ | </source> | ||
+ | *En esta caso invocamos con un solo parámetro de tipo entero | ||
+ | |||
+ | *Podemos ver el resultado | ||
+ | [[Imagen:funcion1ParametrosReal.png]] | ||
+ | }} | ||
+ | |||
+ | |||
+ | {{MRM_Ejemplo|Title=Invocar con 3 parámetros reales | ||
+ | <source lang=php> | ||
+ | ... | ||
+ | echo "Invocando a <strong>verTipoParametros (5,7)</strong><hr />"; | ||
+ | verTipoParametros (5,7); | ||
+ | ... | ||
+ | </source> | ||
+ | *En esta caso invocamos con dos parámetros de tipo entero | ||
+ | *Al igual que en caso anterior los parámetros en la función serían 3, dos de ellos con valor de tipo entero, y el tercero con valor y tipo null | ||
+ | *Podemos ver el resultado | ||
+ | [[Imagen:funcion2ParametrosReal.png]] | ||
+ | }} | ||
+ | {{MRM_Ejemplo|Title=Invocar con 3 parámetro reales uno de ellos un array | ||
+ | <source lang=php> | ||
+ | ... | ||
+ | echo "Invocando a <strong>verTipoParametros ([1,4,'maria'],true,'sonia')</strong><hr />"; | ||
+ | verTipoParametros ([1,4,'maria'],true,'sonia'); | ||
+ | ... | ||
+ | </source> | ||
+ | *Ahora igualemnte pasamos tres parámetros, pero uno de ellos es un array | ||
+ | *Podemos ver el resultado | ||
+ | [[Imagen:funcionParametroRealArray.png]] | ||
+ | }} | ||
+ | |||
+ | |||
+ | {{MRM_Ejemplo|Title=Invocar con 2 parámetro real | ||
+ | <source lang=php> | ||
+ | ... | ||
+ | echo "Invocando a <strong>verTipoParametros ('pedro',5,9)</strong><hr />"; | ||
+ | verTipoParametros ('pedro',5,9); | ||
+ | ... | ||
+ | </source> | ||
+ | *En esta caso invocamos con tres parámetros de diferente tipo | ||
+ | {{Tipo|PHP lenguaje de tipado dinámico, vemos como el tipo puede cambiar en cada invocación}} | ||
+ | *Ahora ya tenemos tres valores diferentes a null en los parámetros reales | ||
+ | *Podemos ver el resultado | ||
+ | [[Imagen:funcion3ParametrosReal.png]] | ||
+ | }} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
*Supongamos que en el ejemplo anterior quisiérmos poder instanciar de la siguiente manera los racionales | *Supongamos que en el ejemplo anterior quisiérmos poder instanciar de la siguiente manera los racionales | ||
<source lang=php> | <source lang=php> |
Revisión de 01:04 2 dic 2016
Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas. |