Instrukcja języka PHP tworząca obiekt $pkt dla zdefiniowanej w ramce klasy Punkt ma postać
| class Punkt { public $x; public $y; } |
$pkt = new Punkt();
$pkt Punkt();
Punkt() $pkt;
$pkt Punkt;
Opracowane na podstawie zadania CKE, wrzesień 2014 (arkusz E.14-X-14.08): W arkuszu przed nazwą obiektu pkt brakowało znaku dolara. Bez niego żaden zapis nie jest poprawnym kodem PHP.
Obiekt klasy tworzy się w PHP operatorem new: $pkt = new Punkt();. Operator rezerwuje pamięć na nowy obiekt, wywołuje konstruktor klasy, jeśli go zdefiniowano, i zwraca obiekt, który trafia do zmiennej. Jak każda zmienna w PHP, ta też zaczyna się od znaku dolara.
Po utworzeniu obiektu do jego pól odwołuje się strzałką: $pkt->x = 5; i echo $pkt->y;. Nawiasy po nazwie klasy przekazują argumenty konstruktora, np. new Punkt(3, 4), a gdy konstruktor nic nie przyjmuje, można je pominąć. Ta sama konstrukcja z new występuje w JavaScripcie, Javie i C#.
Zapisy bez słowa new przypominają deklaracje z C++, gdzie Punkt pkt; od razu tworzy obiekt. PHP nie deklaruje typu przed nazwą zmiennej, więc $pkt Punkt; to dla interpretera dwa słowa obok siebie bez operatora i kończy się błędem składni.
Zapis $pkt Punkt(); wygląda jak wywołanie funkcji Punkt, ale między zmienną a wywołaniem nie ma ani przypisania, ani operatora. Z kolei Punkt() $pkt; to wywołanie nieistniejącej funkcji Punkt, po którym stoi luźna zmienna, czyli również błąd składni.
Zapamiętaj: w PHP obiekt powstaje zawsze z trzech elementów: zmienna z dolarem, znak przypisania i new NazwaKlasy().
Błąd składni widać od razu po uruchomieniu skryptu: PHP przerywa pracę z komunikatem Parse error i numerem wiersza. Warto czytać ten numer, bo wskazuje miejsce, w którym interpreter przestał rozumieć zapis.