[PHP] autmatyczne tworzenie obiektów?

mam pytanie dlaczego to działa i daje taki sam efekt w każdym przypadku, czy ktoś potrafi mi to logicznie wytłumaczyć?

class druzyna{

        public $mecze;

}


$barcelona = new druzyna();

$barcelona->mecze = 1;

echo $barcelona->mecze;

bez tworzenia obiektu:

class druzyna{

        public $mecze;

}


$barcelona->mecze = 1;

echo $barcelona->mecze;

a nawet bez klasy

$barcelona->mecze = 1;

echo $barcelona->mecze;

książka vademecum profesjonalisty wydanie czwarte podaje taki kod który oczywiście nie działa :shock:

class druzyna{

        public $mecze;

}

$barcelona = new druzyna();

$barcelona->$mecze = 1;

echo $barcelona->$mecze;

chodzi o dolar przed “mecze”

$barcelona->$mecze = 1;

Chciałbym sie nauczyc pisac obiektowo ale jak to zauważyłem to opadły mi ręce nic z tego nie rozumiem, chciałbym jako ćwiczenie zrobić sobie taki projekt: liga druzyn, powiedzmy 4 druzyny kazda ma swoje 4 “cechy” (jeżeli źle coś nazywam to prosze o korekty). Tworze sobie klase drużyna i ona miala mieć wlasciwosci “mecze” “goleStrzelone” “goleStracone” “punkty” (właściwości czyli zmienne?). I jak już mam tą klase to tworze obiekty do niej czyli cztery drużyny, i kazda druzyna ma te właściwości w odpowiednich wartosciach do których odwołuję się właśnie przez ->

$wislaKrakow = new druzyna();

$legiaWarszawa = new druzyna(); 

echo $legiaWarszawa->goleStrzelone; 

echo $WislaKrakow->goleStrzelone;

i tak powinienem dostac ilosc goli tych druzyn.

Bardzo prosze o pomoc i odp na pytanie czy na tym polega programowanie obiektowe?

Z tej ksiazki to sie ciezko nauczyć, wolałbym jakiś poradnik na przykładzie bo tu jest sama teoria tyle tekstu że sie wszystko w głowie miesza a zero zastosowań i konkretów :frowning:

Dzięki za kazda pomoc

W momencie, w którym nie utworzysz jawnie obiektu, a traktujesz zmienną jako obiekt (poprzez użycie operatora ->) zmienna $druzyna jest automatycznie rzutowana na obiekt klasy stdClass. Dlatego chociaż 2 i 3 przykład wyświetlają to samo, to tak na prawdę są zupełnie czymś innym niż przykład 1.

Co do drugiej części problemu to szczerze powiedziawszy nie do końca rozumiem o co Ci chodzi.

a mógłbyś konkretniej opisać czym one są w danym momencie i czym się różnią od tych obiektów stworzonych jawnie?

Tak jak napisałem, są obiektem klasy stdClass, a nie obiektem klasy druzyna.