Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czas życia obiektu
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


W programie napisanym w jakimś języku programowania, utworzony obiekt istnieje dopóki nie zostanie zniszczony. W php zmienne, obiekt istnieje dopóki skrypt nie zakończy działania albo nie zostanie zniszczony. To jest problem, który nie do końca mogę zrozumieć, abo inaczej sposób jego rozwiązania. Weźmy pierwszy lepszy przykład, przy którym ten problem dla mnie znowu się uwidocznił. Zastosowanie wzorca registry. Przypomniałem sobie ten wzorzec z artykułu http://www.strefaphp.net/artykul59.html

Załóżmy, że w pliku głównym index.php, zaraz po wystartowaniu aplikacji, wczytywana jest konfiguracja systemu:
  1. <?php
  2. $registry = new Registry;
  3. $registry->set ( 'config', parse_ini_file ( 'plik.ini' ) );
  4. ?>


dzięki czemu mamy łatwy dostęp do konfiguracji:
  1. <?php
  2. echo $registry->get ( 'config_zmienna1' );
  3. echo $registry->get ( 'config_zmienna2' );
  4. ?>


Następnie tworzone jest menu, etc. Użytkownik wybiera jakąś opcje z menu, kontroler oddaje działanie do modelu, a wyniki zwracane są do widoku. Sedno sprawy:

Jak sprawić, żeby w każdym skrypcie (przecież model jest w innym skrypcie, widok w innym), te dane były dostępne? Żeby w każdym skrypcie nie trzeba było tworzyć instancji obiektu Registry i nie ładować do niego danych? Każdą inną klasę, która będzie korzystać z obiektu Registry tak projektować, żeby jako parametr konstruktora mogła przyjmować obiekt Registry?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ActivePlayer
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


Cytat
Idąc Twoim tokiem rozumowania, każda klasa powinna implementować wzorzec singleton, bo przecież w programowaniu obiektowym nie chodzi tylko o tworzenie klas ale także sposób wpsółpracy tych obiektów. I o to właśnie pytam..

rejestr w systemie masz jeden i do niego jak do worka wsadzasz obiekty które potrzebne Ci są wszędzie.

obiektów data do pobierania danych mozesz miec kilka np:
  1. <?php
  2. $tresc = new Data('costam.txt');// przyjąłem ze w konstrukotrze podaje sie sciezke do zrodla.
  3. $xmlik = new Data('sciezka_do_xmla.xml');
  4. ?>

a potem sobie na nich operujesz w jakistam przykładowy sposob.
Go to the top of the page
+Quote Post
Jarod
post
Post #3





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(ActivePlayer @ 15.01.2007, 20:54:58 ) *
rejestr w systemie masz jeden i do niego jak do worka wsadzasz obiekty które potrzebne Ci są wszędzie.

obiektów data do pobierania danych mozesz miec kilka np:
  1. <?php
  2. $tresc = new Data('costam.txt');// przyjąłem ze w konstrukotrze podaje sie sciezke do zrodla.
  3. $xmlik = new Data('sciezka_do_xmla.xml');
  4. ?>

a potem sobie na nich operujesz w jakistam przykładowy sposob.



Czyli wychodzi na to, że jedynym słusznym rozwiązaniem jest stosowanie wzorca registry? A tak rzadko go spotykam..

Bo myślałem nad innym sposobme ale nie wiem na le to jest zgodne z programowaniem OOP. Mamy jakiś obiekt np. Data i chcąc go przekazać do obiektu View, tworzymy klasę View w taki sposób aby construktor View przyjmował Data jako parametr.
np;
  1. <?php
  2. $oData = new Data();
  3. $oView = new View($oData, $param1, $param2);
  4. ?>

dzięki czemu w obiekcie oView mamy dostęp do obiektu oData.

Czy to sposób jest prawidłowy?
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: 4.10.2025 - 00:05