Viniendo de C# Estoy acostumbrado a sobrecargar mis métodos con parámetros de tipos variables. Como no se puede hacer esto en PHP , que a menudo crean métodos como el siguiente ejemplo, que acepta una variable, entonces yo verificar el tipo y actuar en consecuencia:¿Está permitiendo que una variable de función PHP sea una cadena o una matriz, un patrón o antipatrón?
showLength('one');
showLength(array(
'one',
'two',
'three'
));
function showLength($stringOrArray) {
$arr = array();
if(is_array($stringOrArray)) {
$arr = $stringOrArray;
} else if(is_string($stringOrArray)) {
$arr[] = $stringOrArray;
} else {
//exception
}
foreach ($arr as $str) {
echo strlen($str).'<br/>';
}
}
de salida:
3
3
3
5
4
Esto me da la misma funcionalidad que en C#, pero parece un poco desordenado, como si hubiera una mejor manera.
¿Es esta la forma aceptada de sobrecargar el método en PHP (5.3) o hay una forma mejor?
Sí, CodeIgniter lo hace en muchas de sus funciones y funciona bien y ahorra una gran cantidad de código. Mientras esté documentado lo recomiendo. Solo recuerde devolver el tipo esperado. Si pasé un número entero a un modelo, espero recuperar un objeto. Si pasé una matriz de enteros, espero una serie de objetos (tal vez indexados por ID). – Sid