Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Obiektowość - problem
DarekTychy
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 20.11.2012

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


Witam,
temat z uwagi na poziom OOP powinien być w przedszkolu, ale wrzuciłem go do tego działu z racji na temat. W razie problemu proszę o przeklejenie tematu.

Postanowiłem nauczyć się programować obiektowo z racji na niską wydajność aplikacji proceduralnych ale już natrafiłem na problemy, których nie potrafię nigdzie doszukać rozwiązania. Pewnie wiecie, że dobrych materiałów o OO PHP po polsku jest bardzo mało, nie mówiąc już o praktycznych przykładach z życia wziętych (bardzo pomocne są przykłady na marchewkach i żarówkach, pozwalają zrozumieć obiektowość programowania... ironia oczywiście). Próbowałem prostych frameworków, ale dla obiektowego żółtodzioba jest tego trochę za dużo i nie wiadomo za co się zabrać - nie dla mnie póki co, a po drugie wole się sam nauczyć niż korzystać z gotowej klasy. Na takie lenistwo przyjdzie pora jak będę już bardziej zaawansowany w temacie (IMG:style_emoticons/default/smile.gif)

Postanowiłem zacząć od napisania najprostszej klasy, czyli klasy do obsługi MYSQL. Wszystko spoko, metody działają, pobiera, zapisuje itp. Problem się zaczął gdy chciałem sobie zapisać w nowym obiekcie (obiektach? tablicy obiektów?) kategorie wraz z ich ID (dla zrozumienia: kategorie gier online, bo tego tyczy się mój projekt). No i zaczęły się schody, wszyło na jaw, że jenak dalej nie rozumiem istoty programowania obiektowego choć teorie potrafie recytować od tyłu...

Mógłbym prosić o pomoc, wyjaśnienie powyższego problemu, bądź odesłanie do POMOCNYCH oraz istotnych materiałów? Jak to ma w zasadzie wyglądać? Dla każdej kategorii nowy obiekt a w nim odpowiednie pola (jeśli tak, to jak tworzyć obiekty przy pobieraniu danych z bazy?) czy jeden obiekt a w nim kolejne czy obiekt z tablicą kategorii?

Będę wdzięczny za odpowiedzi, pozdrawiam!

Ten post edytował DarekTychy 20.11.2012, 22:57:04
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kedan
post
Post #2





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 20.07.2007

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


Tak na szybko i z błędami:
  1. <?php
  2.  
  3. class GameObj {
  4.  
  5. public $id;
  6.  
  7. public $name;
  8.  
  9. public $whatever;
  10.  
  11. }
  12.  
  13. class SQL {
  14.  
  15. private $host;
  16.  
  17. private $database;
  18.  
  19. private $login;
  20.  
  21. private $password;
  22.  
  23.  
  24. protected $query;
  25.  
  26. protected $query_result;
  27.  
  28.  
  29. public __construct() {
  30. //....php
  31. }
  32.  
  33. public function table($table_name) {
  34. //...mysql
  35. $this->query = 'SELECT `$table_name`';
  36. return $this;
  37. }
  38.  
  39. public function id($id) {
  40. //....mysql
  41. $this->query .= 'WHERE `id` = $id';
  42. return $this;
  43. }
  44.  
  45. public function get() {
  46. $this->query_result = mysql_query($this->query)
  47. return new GameObj($this->query_result);
  48. }
  49.  
  50. public function save($object) {
  51. $errors = FALSE;
  52. //.... mysql + php
  53. return $errors ? FALSE : $object;
  54. }
  55.  
  56. }
  57.  
  58. // uzycie:
  59.  
  60. $sql = new SQL('localhost','database','login','password');
  61.  
  62. $obj = $sql
  63.  
  64. ->table('games')
  65.  
  66. ->id('11')
  67.  
  68. ->get();
  69.  
  70. $obj->name = 'Foo';
  71.  
  72. $obj = $sql->save($obj);
  73.  
  74. ?>

Zasadniczo im więcej klas utworzysz i im prostsze zadania będą wykonywać tym lepiej. Zazwyczaj do SQL nie wystarczy jedna klasa - chyba że będzie bardzo prosta. Poczytaj sobie o łańcuchowaniu (method chaining http://www.webnote.pl/method-chaining-w-php.html). Jak już bierzesz się za OOP w PHP to poczytaj o wzorcu MVC - Model View Controller - to takie trzy podstawowe klasy z których zbudowana jest reszta systemu: model odpowiada za komunikacje z bazą danych, view za wyświetlanie danych, controller za pobieranie danych od użytkownika, przekazywanie danych z modelu do widoku itd. I ucz się angielskiego.

Ten post edytował Kedan 22.11.2012, 11:54:30
Go to the top of the page
+Quote Post

Posty w temacie


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: 29.09.2025 - 17:13