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 12:04 1 dic 2016
| Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas. |







