Archiwum

Posty oznaczone ‘ciekawostki’

PHP: prawie jak parametry nazwane

Marzec 3rd, 2010 zergu 6 comments

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:

Kategorie:PHP Tagi: