Mam mały problem z tworzeniem skryptów w sposób obiektowy, trochę teorii a raczej dość dużo teorii jaką znalazłem w necie na ten temat przeczytałem i teraz proszę o pomoc w praktyce. Mam taki oto kod i komentarze w nim z wyjaśnieniami co ma co robić, jednak coś to nie chce działać tak jak ja bym chciał, no i nie wiem czy to dobrze wszystko pisze? Czy dobry styl i tok myślenia mam co do tworzenia obiektów i klas oraz ich metod?
<?php //Jak stworzyć nowy obiekt no to wiem: // $X = new NowyObiekt; class NowyObiekt { ////Deklaracja właściwości obiektu/////////////////// public $nazwaObiektu; public $kategoriaObiektu; public $wielkoscObiektu; public $wagaObiektu; public $wysokoscObiektu; //pierwsza funkcja w mojej klasie to właśnie ta standardowa której powinno się chyba używać, Znaczenie jej oczywiście //rozumiem, stosuję się ją przy przypisywaniu wartości danym parametrom obiektu poprzez deklaracje np. // $this -> nazwaObiektu = 'Jan Kowalski'; // lub // $this -> wagaObiektu = 54; //No chyba, że coś źle zrozumiałem no to proszę o poprawienie mnie, i wyjaśnienie dlaczego stosuje się __set() public function __set($nazwa, $wartosc) { $this -> $nazwa = $wartosc; } //Kolejną funkcją dla tego obiektu jaką bym chciał stworzyć to będzie funkcjaj po zdeklarowaniu której zostaną //wyświetlone wszystkie informacje o obiekcje jaki został stworzony, no ale nie wiem jak dodać zależności aby to //był naprawde kod obiektowy. Zależności takie jak np. waga obiektu będzie zależała od jego wielkości, a znowu //wielkość od jego wysokości, nie wiem jak to napisać? czy użyć funkcji z parametrami czy nie? Ja to widzę tak: public function WyswietlInformacje() { } //Tu znowu próba stworzenia funkcji podającej wielkość w zależności od wysokości public function Wielkosc($param) { $this -> $wysokoscObiektu = $param; switch ($this -> $wysokoscObiektu) { case ($wysokoscObiektu > 0) or ($wysokoscObiektu < 101) : $this -> wielkoscObiektu = 10; break; case ($wyskoscObiektu > 100) or ($wysokoscObiektu < 201) : $this -> wielkoscObiektu = 20; break; case ($wysokoscObiektu > 200) : $this -> wielkoscObiektu = 30; } } // tak jak wyżej tylko dla wagi public function Waga() { switch ($this -> $wielkoscObiektu) { case ($wielkoscObiektu = 10) : $this -> wagaObiektu = 1000; break; case ($wielkoscObiektu = 20) : $this -> wagaObiektu = 2000; break; case ($wielkoscObiektu = 30) : $this -> wagaObiektu = 3000; } } } $x = new NowyObiekt(); $x -> nazwaObiektu = 'Sosna'; $x -> kategoriaObiektu = 'Drzewa'; $x -> Wielkosc(50); $x -> WyswietlInformacje(); ?>
to taki kompletnie bezsensowny skrypt, na którym chciałem sprawdzić czy coś z tego wszystkiego co poczytałem mi zostało, proszę o jakieś ukierunkowanie mnie, co robie źle? nad czym popracować? na co zwracać największa uwagę? No i co można by zmienić w tym czymś co napisałem aby to działało w miarę logicznie. Wydaje mi się, że dobrze to opisałem i łatwo dojdziecie do tego jak ma działać ta klasa, jeśli ten kod można nazwać rzeczywiście klasą. Bo może jednak źle to wszystko zrozumiałem i powinienem patrzyć na to wszystko pod trochę innym kontem?