Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Niezrozumiała składnia
petavius
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 21.10.2010

Ostrzeżenie: (0%)
-----


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.

Ten post edytował petavius 17.06.2012, 08:54:42
Go to the top of the page
+Quote Post
solr
post
Post #2





Grupa: Zarejestrowani
Postów: 43
Pomógł: 8
Dołączył: 11.08.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
petavius
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 21.10.2010

Ostrzeżenie: (0%)
-----


Dzięki wielkie sporo mi to rozjaśniło.
Pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 13:03