W PHP funkcjonuje coś takiego jak operator trójargumentowy. Jest to składnia języka, pozwalająca na zastąpienie pojedynczego bloku if…else w bardziej przejrzysty sposób:
warunek ? jeśli_prawda : jeśli_fałsz
Przykładowo:
$zmienna = $k >= 0 ? 'dodatnie' : 'ujemne';
…odpowiada konstrukcji:
if ($k >= 0)
{
$zmienna = 'dodatnie';
}
else
{
$zmienna = 'ujemne';
}
Jak widać uproszczenie jest znaczne. Object Pascal (Delphi) nie posiada niestety operatora trójargumentowego. W tym wpisie pokażę jak zastąpić tą funkcjonalność przy pomocy prostej funkcji i jej przeciążenia.
Czytaj więcej…
Trudno wymyślić sensowny tytuł dla zagadnienia które chcę opisać. Zawsze zastanawiało mnie czy pisząc w PHP funkcję która początkowo przeprowadza walidację przekazanych argumentów, stosować konstrukcję typu:
function nazwa($argument)
{
if (warunek)
{
return FALSE;
}
... ciało funkcji
}
…czy też:
function nazwa($argument)
{
if (warunek)
{
return FALSE;
}
else
{
... ciało funkcji
}
}
Intuicyjnie może się wydawać że pierwszy metoda będzie działać szybciej, gdyż po spełnieniu warunku wychodzimy od razu z funkcji – parser nie musi przetwarzać reszty kodu. Z kolei w drugiej, mimo iż to co znajduje się w bloku else się nie wykona i tak musi zostać przeczytane przez PHP. Jak jest w rzeczywistości? Sprawdźmy to!
Czytaj więcej…