Pochodzę z C# Jestem przyzwyczajony do przeciążania moich metod zmiennymi parametrami. Ponieważ nie można tego zrobić w PHP, często tworzenia metod, takich jak na przykładzie poniżej, które przyjmują zmienną, następnie sprawdzić typ i działać odpowiednio:Czy dozwolona jest zmienna funkcji PHP jako ciąg lub tablica z wzorcem lub wzorem?
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/>';
}
}
wyjściowa:
3
3
3
5
4
Daje mi to tę samą funkcjonalność co w C#, ale wydaje się nieco niechlujny, jak gdyby był lepszy sposób.
Czy jest to zaakceptowany sposób na przeciążenie metody w PHP (5.3), czy jest lepszy sposób?
Tak, CodeIgniter zrobić to w wielu z ich funkcji i działa dobrze i oszczędza dużo kodu. Dopóki jest to udokumentowane, polecam to. Pamiętaj tylko, aby zwrócić oczekiwany typ. Jeśli przekazałem liczbę całkowitą do modelu, oczekuję obiektu wstecz. Jeśli przekażę tablicę liczb całkowitych, oczekuję od tyłu tablicy obiektów (być może indeksowanych przez ID). – Sid