Sobrecarga

La sobrecarga es una característica muy útil de algunos lenguajes de programación a los objetos. Sin embargo tuti lenguajes orientados a objetos no lo soportan, y algunos de los "de aplicación" o limitada o diferente. En general, las funciones o métodos, la sobrecarga le permite crear dos o más funciones / métodos que tienen el mismo nombre, pero aceptan diferentes parámetros, por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
función sum (a: int, b: int) {
/ / Código
}

función sum (a: float, b: float) {
/ / Código
}

función sum (a: cuerda, b: cadena, c: string) {
/ / Código
}

La elección de la función de derecho de uso es, por supuesto, dictada únicamente por el "tipo" (y también el número) de los parámetros pasados ​​a la función misma. Puede, cono algunas líneas adicionales de código, emular este comportamiento, incluso en idiomas que no lo soportan directamente. Por ejemplo, en PHP se puede crear una función como esta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/ **
* Esta función se comporta de forma diferente en función de los parámetros de entrada.
* En este ejemplo se puede "entender" cómo comportarse a partir del análisis
* De los parámetros de entrada y luego:
*
* - Recuperar, incluso si los parámetros pasados ​​de una manera diferente
* - La función de ejecutar código diferente en función de los parámetros de entrada
*
*
* /
$id_qualcosa = '' ) { get_qualcosa función ($ id_qualcosa ='') {

func_num_args ( ) > 0 ) { // numero degli argomenti if ( func_num_args ()> 0) {/ / número de argumentos
func_get_arg ( 0 ) ; // prendo il primo Arg $ = func_get_arg (0) / / tomar la primera
is_array ( $arg ) ) { // se il primo argomento è un array... if ( is_array ($ arg)) {/ / si el primer argumento es una matriz ...
$arg [ 'id_qualcosa' ] ; // faccio qualcosa o recupero il parametro Args Id_qualcosa $ = $ ['id_qualcosa'], / / hacer algo o recuperar el parámetro
}
}
}

Esta técnica puede ser útil cuando tenemos una función que se puede llamar en diferentes campos. Por ejemplo, imagine que tiene una función que extrae información de una base de datos de un usuario. Esto podría tomar la forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
/ **
* Obtener la información del usuario a través de la Identificación
*
* @ Param id $ ID de la base de datos
* /
$id_user = '' ) { función get_user_info ($ id_user ='') {
func_num_args ( ) > 0 ) { // numero degli argomenti if ( func_num_args ()> 0) {/ / número de argumentos
func_get_arg ( 0 ) ; // prendo il primo Arg $ = func_get_arg (0) / / tomar la primera
is_array ( $arg ) ) { // se il primo argomento è un array... if ( is_array ($ arg)) {/ / si el primer argumento es una matriz ...
$arg [ 'id_user' ] ; // $arg === $_POST Args Id_user $ = $ ['id_user'] / / $ arg === $ _POST
}
}
}

Esta característica se puede utilizar dentro de una biblioteca ( mialib.php ) y llama a otras funciones de PHP. Si se utilizan técnicas de Ajax o de forma simple, que sería bueno volver a utilizar la misma función sin necesidad de construir una forma específica. Si es así tenemos un formato que requiere el uso de un menú select la opción del usuario:

1
2
3
4
5
6
7
8
9
"post" action = "sample.php" > < formulario method = "post" action = "sample.php">
"id_user" > < seleccione name = "id_user">
"1" > Utente 1 < / option > < opción value = "1"> Usuario 1 </ opción >
"2" > Utente 2 < / option > < opción value = "2"> Usuario 2 </ opción >
"3" > Utente 3 < / option > < opción value = "3"> Usuario 3 </ opción >
</ seleccionar >
"hidden" name = "comando" value = "get_user_info" / > < entrada type = "hidden" name = "comando" value = "get_user_info" />
"submit" value = "Invia" / > < entrada type = "submit" value = "Enviar" />
</ formulario >

Nuestra sample.php podrían ser:

1
2
3
4
/ / Incluir el archivo que contiene mis funciones
; include_once "mialib.php";
/ / Llamar a la función de pasar un array $ _POST mi
'echo ' . $_POST [ 'comando' ] . "( \$ _POST );" ) ; eval _POST ('eco'. $ ['comando']. "(\ $ _POST );");

No hay comentarios para esta entrada

Deja un comentario

XHTML PERMISO TAG: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> código de inserción:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL 


Dejar de SOPA