PHP: prawie jak parametry nazwane
W PHP nie ma czegoś takiego jak parametry nazwane z działania, ale jest taka rzecz z …wyglądu. O co chodzi? Mając funkcję:
function foo ($a = 1, $b = 22) { echo $a.' ~ '.$b; }
Normalnie ją wywołujemy na takie sposoby:
foo() // → '1 ~ 22' foo (6) // → '6 ~ 22' foo (3, 4) // → '3 ~ 4'
Jednak możemy sobie funkcję wywołać dodając etykiety parametrom:
foo ($a = 2, $b = 33) // → '2 ~ 33'
Możemy to zrobić również „niepoprawnie”:
foo ($b = 7, $a = 3) // → '7 ~ 3'
Jak widać PHP nie bierze pod uwagę tych nazw parametrów, jedynie kolejność. Nazwy mogą być dowolne, użyte zostaną i tak te z deklaracji funkcji. Powstaje więc pytanie — po co tego w ogóle używać? Otóż — dla przejrzystości kodu, co powinien dobrze zobrazować poniższy przykład:
render_last_posts (10, 'desc', true, null) // → że jakie te posty mają być? render_last_posts ($limit = 10, $sort = 'desc', $only_published = true, $by_user = null) // aaa, takie!
UWAGA. Takie przypisania ustawiają wartości zmiennych w danym zakresie, co czasami może doprowadzić do błędów (nadpisanie wcześniej zdefiniowanej zmiennej) lub być sytuacją pożądaną (przypisanie wartości do późniejszego wykorzystania).
Grafika na licencji:
