Kurs OO [Nalfein] |
Kurs OO [Nalfein] |
24.09.2004, 14:18:55
Post
#21
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 18.09.2004 Ostrzeżenie: (0%) |
Mnie męczy jeszcze jedna sprawa. Jak najlepiej przekazywać obiekty?
Mam np. obiekt bazy danych, smarty i jeszcze kilka że tak powiem klas głównych
I teraz mam kolejną klasę, która ma używać dokładnie tych obiektów (nie kopii). I właśnie, jaki jest najlepszy sposób, aby przekazywać te obiekty? Mi się nasuwają 2 różne, ale oba wymagają przypisania $this->db = $db; i odwoływania się do za pośrednictwem $this->...
Da się to jakoś elegancko rozwiązać? Ten post edytował Piotr_M 25.09.2004, 21:30:40 |
|
|
24.09.2004, 16:28:35
Post
#22
|
|
Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) |
mozesz zrobic klase ktora bedzie 'magazynem' obiektow, do ktorego bedziesz sie odwolywal, magazyn bedzie mial za zdanie sprawdzic czy instancja obiektu juz jest stworzona, jesli nie to twozy i oddaje referencje, a jesli juz jest to tylko oddaje referencje.
innym sposobem jest robienie, podczas tworzenia, metod statycznych ktore sa odpowiedzialne za tworzenie instancji. Metoda chyba wynkonanla jest tylko przy php w wersji 5 -------------------- Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota Zarządzaj swoim budżetem domowym |
|
|
24.09.2004, 17:48:08
Post
#23
|
|
Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%) |
Cytat(Sh4dow @ 2004-09-24 17:28:35) innym sposobem jest robienie, podczas tworzenia, metod statycznych ktore sa odpowiedzialne za tworzenie instancji. Metoda chyba wynkonanla jest tylko przy php w wersji 5 Ta metoda to wzorzec projektowy singleton, i mozna go zaimplementowac takze w php 4 (choc dzieki wlasciwoscia statycznym w php 5 jej implementacja jest wygodniejsza i bezpieczniejsza). Przyklad implementacji w php 4:
Tak by to moglo wygladac w php 5:
Singleton pozwala nie tylko na posiadanie dostepnej wszedzie instancji obiektu, ale zabezpiecza także przed powstaniem więcej niż jednej instancji danego obiektu. W obu przypadkach przekazanie referencji do naszego obiektu wygląda tak:
-------------------- "Programmers are in a race with the Universe to create bigger and better idiot-proof programs, while the Universe is trying to create bigger and better idiots. So far the Universe is winning."
Cudi's devBlog |
|
|
25.09.2004, 23:05:23
Post
#24
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 18.09.2004 Ostrzeżenie: (0%) |
Dzięki za odpowiedzi.
Kiedyś czytałem o wzorcach projektowych, ale przeczytać, a widzieć gdzie jakiego wzorca użyć to co innego... Chyba jednak użyję pierwszej metody ze względu na kompatybilność zrówno z php 4 jak i 5. Sposób z magazynem obiektów nie do końca mi się podoba... Cudi, jest mały błąd - brakuje function.
|
|
|
9.10.2004, 20:35:35
Post
#25
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 31.03.2002 Skąd: Toruń Ostrzeżenie: (0%) |
Dopiero teraz przejrzałem ten kurs, dlatego jestem może trochę nie w temacie Chciałem tylko powiedzieć, że rozdział I może przerazić początkujacego programistę.
Autor zaczął trochę z grubej rury, tak jakby od tyłu. Osobiście jestem zwolennikiem uczenia się czegokolwiek (w tym również OO) od podstaw i prostych przykładów z życia wziętych. Przykłady zamieszczone w tym kursie zawierają zbyt dużo rzeczy - zapytania sql, includowanie, pętle, smarty. To zaciemnia ideę OO, bo czytelnik może mieć dylemat, na czym ma się skupić. W dodatku częstą praktyką uczących się (znam to ze swojego i nie tylko swojego doświadczenia) jest przepisywanie przykładów toćka w toćkę, więc żeby te z kursu zadziałały, trzeba zrobić wiele rzeczy dookoła. Czy nie lepiej byłoby podawać prostsze przykłady, chociażby banalny i oklepany, ale uniwersalny i piękny przykład klasy "Figura", jej pochodnych "Trójkąt", "Kwadrat", "Koło" z parametrami "pozycjaXY", "typFigury", metodami "podajTyp", "przesunDoGory" i metodami wirtualnymi np. "obliczPole", "narysuj" itp? W definicji oczywiście nie trzeba by podawać całego kodu na obliczenie pola czy procedury rysującej figurę, tylko opatrzyć ją odpowiednim komentarzem typu "tutaj idzie procedura rysująca". Wiele podręczników do programowania pisanych nawet przez tzw. "doświadczonych dydaktyków" zawiera zbyt dużo informacji i dlatego mogą być nieczytelne dla ludzi dopiero zaznajamiających się z danym tematem. Nie twierdzę, że podawanie zbyt złożonych przykładów uniemożliwia poznanie tematu, ale może zająć dużo więcej czasu A ponieważ OO jest w modzie, więc być może nawet początkujący programiści chcieliby się zaznajomić z tym tematem przy okazji uczenia się php. A przecież warto -------------------- misiu | chór
"Zdeterminowany programista potrafi stworzyć fatalny kod w każdym języku" Allen Holub |
|
|
Wersja Lo-Fi | Aktualny czas: 23.09.2024 - 17:42 |