Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zazębianie się dwóch klas.
Black-Berry
post 30.04.2008, 08:55:38
Post #1





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Mam 2 klasy które potzrebują siebie nawzajem. Jedna Language_Manager druga System_Log.

  1. <?php
  2. $languageManager = new Language_Manager();
  3. $systemLog = new System_Log($languageManager);
  4. ?>


W konstruktorze jednej podaję odwołanie do drugiej ale potrzebuję czegoś na wzór:

  1. <?php
  2. $languageManager = new Language_Manager($systemLog );
  3. $systemLog = new System_Log($languageManager);
  4. ?>


Da się to jakoś osiągnąć ?

Ten post edytował batman 30.04.2008, 18:17:40
Powód edycji: poprawiłem (drugi raz) straszny(!) błąd ortograficzny. Następnym razem będzie warn!


--------------------
Go to the top of the page
+Quote Post
Sedziwoj
post 30.04.2008, 09:02:38
Post #2





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Tak z ciekawości, po co Ci w systemie logowania, klasa do obsługi języków?


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
sniezny_wilk
post 30.04.2008, 09:13:30
Post #3





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


A nie możesz użyć extends ? link..

PS: proszę popraw temat bo te "dwuch" boli..

EDIT: @batman - thx smile.gif

Ten post edytował sniezny_wilk 30.04.2008, 09:23:24


--------------------
Go to the top of the page
+Quote Post
mike
post 30.04.2008, 09:40:40
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Dziedziczenie tutaj to akurat jedno z gorszych wyjść. Nie polecam a wręcz odradzam. Zaburzenie jakiejkolwiek logiki.

~Black-Berry jeśli faktycznie potrzebujesz jednaj klasy w drugiej i na odwrót to zrób tak:
  1. <?php
  2.  
  3. $languageManager = new Language_Manager();
  4. $systemLog = new System_Log($languageManager);
  5. $languageManager->setSystemLog($systemLog);
  6.  
  7. ?>

Aczkolwiek niewiele myśląc potrzeba posiadania Language_Managera do utworzenia System_Loga wydaje się dość dziwna.
Go to the top of the page
+Quote Post
DeyV
post 30.04.2008, 09:41:50
Post #5





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Ten przykład raczej nie kwalifikuje się do extend.

Ja zrobiłbym to mniej więcej tak:
  1. <?php
  2. $languageManager = new Language_Manager();
  3. $languageManager->registerLog( new System_Log( $languageManager ) );
  4. ?>


choć trzeba przyznać, że krzyżowe wykorzystywanie obiektów często prowadzi do sporego zamieszania w kodzie, którego ja osobiście nie lubię.

Edit:
Mike był szybszy smile.gif


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Black-Berry
post 30.04.2008, 15:16:14
Post #6





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Dzięki za posty. Postaram się zastosować metodę mike'a.

Wyjaśnienie: Language_Manager includuje pliki jezykowe z których kożysta systemLog (chodiz o tłumaczenia). A info o tym, że konkretny plik językowy został załadowany chcę umieścić w logach (informację, że na przykład nie było tłumaczenia polskiego więc system załadował angielski plik z tłumaczeniami)

Tytuł poprawiłem. Bardzo przepraszam za bład.

pozdrawiam.


--------------------
Go to the top of the page
+Quote Post
Sedziwoj
post 30.04.2008, 15:42:56
Post #7





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


To jak Ci loguje ładowanie pliku językowego, skoro dopiero potem jest tworzone logowanie?


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
Black-Berry
post 30.04.2008, 17:16:12
Post #8





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


no właśnie w tym sęk, muszę wymyslić coś rozsądnego. Napisałem posta bo myślałem, że może jest jakiś standard postepowania w takich wypadkach i ktoś coś słyszał. Posiedzę nad tym jeszcze z pół godzinki i napewno coś ruszy. jeszcze raz dzięki za posty.

edit: Rozwiązałem problem. Błędem z mojej strony było zakładanie, że cokolwiek powinno być wykonywane zaraz po załadowaniu konstruktora. W kontruktorze powinny być inicjalizowane tylko uchwyty do innych klas.

Ten post edytował Black-Berry 30.04.2008, 17:22:53


--------------------
Go to the top of the page
+Quote Post
Sedziwoj
post 30.04.2008, 17:28:45
Post #9





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Tylko że w Twoim przypadku najpierw tworzysz obiekt Log a potem Lang, bo lang w czasie ładowania klasy korzysta z log (ale może już po załadowaniu, kiedy będzie już działać, tylko nadal uważam że to grzebanie w gównie, lepiej aby w czasie wyświetlania logów było dodawane tłumaczenie jeśli już jest konieczne)

EDIT zjadłem spację

Ten post edytował Sedziwoj 30.04.2008, 17:29:08


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
Black-Berry
post 30.04.2008, 17:43:32
Post #10





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Chciałem dodać nowy wpis do ksiązki logów zaraz po starcie systemu. Niestety nie dało się bo wtedy wpis nie mógłby być tłumaczony na inne języki (a chcę mieć możliwość tłumaczenia wszystkiego). Zrezygnowałem więc z tego wpisu i teraz pierwszy jaki ląduje w książce to wpis o załadowaniu tłumaczeń systemowych. Masz rację, takie coś to kopanie się z koniem. Nie da sie to trudno Pomijam pierwszy wpis.


--------------------
Go to the top of the page
+Quote Post
Sedziwoj
post 30.04.2008, 18:05:37
Post #11





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


A nie możesz w logach umieszczać id do wiadomości i to co jest od niej niezależne?
Bo skoro coś bierzesz z lang, to równie dobrze, możesz tylko podać co ma wziąć, a potem przy wyświetlaniu pobiera odpowiednią wersję.
Do tego nie wiem, dlaczego Logi mają być zależne od wersji językowej, no chyba że nie są tylko dla obsługi technicznej...


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
Black-Berry
post 1.05.2008, 06:47:30
Post #12





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


U mnie wpis składa się przede wszystkim z tekstu, typu (note,warn, error) i czasu(do milisekund) dlatego ten tekst 1 wiadomosci musiał być wpierw tłumaczony. To bardziej taka konsola... W przyszłosci może inaczej to rozbuduję ale będę miał solidną podstawę. Ten 1 wpis miałem teź zamiar uzywać do obliczania czasu wykonania skryptu dlatego był taki istotny.

Edit: Jeśli dobrze rozumiem to unikalne ID wiadomosci nie przejdzie bo będzie za duzo rodzajów wpisów. Na razie tylko dla obsługi technicznej (czyli mnie) ale w przyszłości logi będę wysyłał mailem w razie wystąpienia errorów... Dokładnie jeszcze nie wiem ale skoro juz je zaczałem pisać to wolę to zrobić dobrze.

Ten post edytował Black-Berry 1.05.2008, 06:54:09


--------------------
Go to the top of the page
+Quote Post
Sedziwoj
post 1.05.2008, 21:57:40
Post #13





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Wiesz, i tak będziesz miał je jakiś identyfikowane, przecież masz je w wersjach językowych, więc jakoś nie widzę różnicy, czy zapisuje się wiadomość, czy tylko jej identyfikator, a przy wyświetlaniu jest dopiero na prawdę pobierana... (wyświetlani/wysyłanie czy cokolwiek innego)


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
Black-Berry
post 1.05.2008, 22:22:20
Post #14





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Tak, masz rację. Ostatecznie rozwiązałem sprawę tak że do ksiązki wpisuję constanty, a dopiero przy wyswietlaniu zamieniam je na przetłumaczone zdania. Początkowo chciałem oszczędzić trochę czasu procesora ale to chyba nie ma jednak najmniejszego sensu. Czas tak szybko leci, że człowiek nie zauważa jak to z P90 nagle zrobiło się core Quatro na serwerach smile.gif


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 09:37