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.