Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dwie klasy i zapętlający się kod, rozwarzania teoretyczne
starach
post
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Witam.
Mam dwie klasy. Pierwsza potrzebuje drugiej żeby działać a druga potrzebuje pierwszej żeby działać.
Na swoją zgubę przyjąłem zasadę że deklaracje klas robie w konstruktorach.
Kod się zapętla a ja nie za bardzo mam pomysł co z tym zrobić.
Klasami są klasa konfiguracyjna Config i klasa obsługująca zdarzenia Event.
Myślałem czy by nie zrobić z metody trigger w klasie Event metody statycznej,
ale zrobi się bałagan w kodzie bo co chwila będę musiał używać self:: macie jakiś pomysł co z tym zrobić ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Dziwny problem. Użyj include_once() - php samo powinno sobie poradzić.

Pozdrawiam.
Go to the top of the page
+Quote Post
Kocurro
post
Post #3





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

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


Singleton ?
Go to the top of the page
+Quote Post
starach
post
Post #4





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


  1. <?php
  2. class Klasa_pierwsza
  3. {
  4. var $objekt_klasa_druga;
  5. function Klasa_pierwsza()
  6. {
  7. $this->objekt_klasa_druga = new Klasa_druga;
  8. }
  9. }
  10. class Klasa_druga
  11. {
  12. var $objekt_klasa_pierwsza;
  13. function Klasa_druga()
  14. {
  15. $this->objekt_klasa_pierwsza = new Klasa_pierwsza;
  16. }
  17. }
  18. ?>

Teraz jasne o co chodzi ?
Tyle tylko że u mnie w wywoływaniu klasy pośredniczy funkcja która zwraca referencje do utworzonego obiektu klasy.

Ten post edytował orglee 17.11.2007, 12:12:44
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Eeee, blad w projekcie? Nie mozesz tego inaczej zaprojektowac?
Go to the top of the page
+Quote Post
starach
post
Post #6





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Rozważam przerobienie metody klasy event ( trigger ) na statyczną rozwiązało by to problem ale nie lubie metod statycznych,
bo kod się przez to kiepsko czyta. A jak na razie mój framework wygrywa głównie dzięki czytelności kodu :|
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #7





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Ale czytelności silnika, czy API? Bo jeśli to silnik, to czytelność jest drugorzędna względem wydajności i rozszerzalności.

Pozdrawiam
Go to the top of the page
+Quote Post
starach
post
Post #8





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Jeśli idzie o obsługę zdarzeń to chyba mówimy zdaje się o API.
Jako że całość ma budowę modułową, a po publikacji rzeczonego FW,
ktoś możliwe że będzie chciał zobaczyć jak zaimplementowałem obsługę zdarzeń.
Oprócz tego modyfikowanie tego elementu też będzie 'upierdliwe',
bo samo użycie to zmieni się tylko z
$event = //pobranie klasy
$event->trigger('identyfikator');
na
Event::trigger('identyfikator');
Może szukam kwadratowych kół, ale mam po prostu jakąś niechęć do używania metod statycznych.

edit>
Rozwiążę sprawę w taki sposób że po prostu przeniosę funkcjonalność klasy Config,
do klasy Event która sama będzie ładowała swoją konfigurację bez pośrednictwa w.w. klasy.

Ten post edytował orglee 17.11.2007, 13:49:04
Go to the top of the page
+Quote Post
Kocurro
post
Post #9





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

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


Ehh ... a wystarczy uzyc singletona ...
Go to the top of the page
+Quote Post
starach
post
Post #10





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Cytat(Kocurro @ 17.11.2007, 15:03:33 ) *
Ehh ... a wystarczy uzyc singletona ...
Ehh ... a wystaczy czytać ze zrozumieniem.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
Mam dwie klasy. Pierwsza potrzebuje drugiej żeby działać a druga potrzebuje pierwszej żeby działać.
Na swoją zgubę przyjąłem zasadę że deklaracje klas robie w konstruktorach.
Kod się zapętla a ja nie za bardzo mam pomysł co z tym zrobić.


O, matko!

Albo wyrzucasz inicjacje drugiej klasy z konstruktora
albo robisz tak zeby nie byly od siebie nawzajem zalezne.


np

  1. <?php
  2. $a = new A();
  3. $b = new B( $a );
  4. ?>


czy podobnie, lub zupelnie inaczej

Ten post edytował dr_bonzo 17.11.2007, 17:51:37
Go to the top of the page
+Quote Post
starach
post
Post #12





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


doktorku to tylko tak ładnie w teorii wygląda w praktyce jest trochę trudniej.
Nie chcę wywalać deklaracji z konstruktora bo to rozwala mi całkowicie zasadę którą przyjąłem.

Ale tak jak napisałem klasa Event sama wczytuje swój plik konfiguracyjny,
bo w jej przypadku nie trzeba stosować trochę bardziej skomplikowanej metody którą użyłem w klasie Config
i wszystko śmiga tak jak powinno.
Go to the top of the page
+Quote Post

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: 23.08.2025 - 12:47