Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Niezrozumiała składnia
Forum PHP.pl > Forum > Przedszkole
petavius
Witam
Od jakiegoś czasu próbuję napisać swój cms, mój projekt potrafi pobrać artykuły z bazy danych umieścić je na stronie wg kategorii, utworzyć menu etc. Szło mi całkiem dobrze ale nie byłem pewien czy robie to we własciwy sposób. Kupiłem książkę "Projektowanie systemów cms przy uzyciu PHP i jQuery". Przeklepełem kod z rozdziału pierwszego ale są tu fragmnty których nie rozumiem.
Nie wiem czy są to jakieś wyrażnia skrotowe, nie moge tego znaleźć w dokumentacji może ktoś bardziej doświadczony wyjaśni mi co znaczy:

1. co oznacza ten ? w środku i :0 na końcu

$id=isset($_REQUEST['id']?(int)$_REQUEST['id']:0;


2. Tu nie wiem w ogóle o co chodzi

$PAGEDATA=(isset($r) && $r) ? $r : Page::getInstance($id);


3. co znaczy @ przed np. funkcją

if(!@array_key_exists($sp,$instancesBySpecial))
{ }

Z góry dziekuje za pomoc.
solr
Cytat(petavius @ 17.06.2012, 09:49:36 ) *
Witam
Od jakiegoś czasu próbuję napisać swój cms, mój projekt potrafi pobrać artykuły z bazy danych umieścić je na stronie wg kategorii, utworzyć menu etc. Szło mi całkiem dobrze ale nie byłem pewien czy robie to we własciwy sposób. Kupiłem książkę "Projektowanie systemów cms przy uzyciu PHP i jQuery". Przeklepełem kod z rozdziału pierwszego ale są tu fragmnty których nie rozumiem.
Nie wiem czy są to jakieś wyrażnia skrotowe, nie moge tego znaleźć w dokumentacji może ktoś bardziej doświadczony wyjaśni mi co znaczy:

1. co oznacza ten ? w środku i :0 na końcu

$id=isset($_REQUEST['id']?(int)$_REQUEST['id']:0;


To jest operator trójargumentowy. W tym przypadku wartość zmiennej $id zależy od warunku "czy istnieje zmienna $_REQUEST['id']?", jeśli tak (zwraca true), to przypisz to co jest w $_REQUEST['id'] zrzutowane na int, a jeśli nie (false), to przypisz 0.
Wg. zasady: "warunek ? jesli_prawda : jeśli_fałsz".

Cytat(petavius @ 17.06.2012, 09:49:36 ) *
2. Tu nie wiem w ogóle o co chodzi

$PAGEDATA=(isset($r) && $r) ? $r : Page::getInstance($id);


Analogicznie do powyżej. Wartość zmiennej $PAGEDATA, zależy od warunku "isset($r) && $r" czyli czy istnieje $r i czy jego wartość jest ewaluowana do true (php nie ma stałych typów np. jesli $r = 1, to bedzie w tym warunku warte true, itp). Jesli warunek prawdziwy to przypisz wartość $r, jeśli nie, to wykonaj statyczną metodę getInstance, z klasy Page z argumentem $id.

Cytat(petavius @ 17.06.2012, 09:49:36 ) *
3. co znaczy @ przed np. funkcją

if(![PHP][/PHP]@array_key_exists($sp,$instancesBySpecial))
{ }


Znaczy tyle, że nie pokazuje komunikatów o ostrzeżeniach. Np, w tym przypadku mógłby wygenerować ostrzeżenie, że $instancesBySpecial nie jest tablicą. IMHO, nie jest dobrym zwyczajem używanie tego.
petavius
Dzięki wielkie sporo mi to rozjaśniło.
Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.