Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V  < 1 2  
Reply to this topicStart new topic
> widocznosc obiektu wewnątrz klasy
Black-Berry
post
Post #21





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

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


Taki obiekt konfiguracyjny były również singletonem prawda? Podobnie jak driver bazy danych ?
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #22





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




To już od Ciebie zależy. Może być sigletonem, ale nie musi
Go to the top of the page
+Quote Post
Cotter
post
Post #23





Grupa: Zarejestrowani
Postów: 57
Pomógł: 12
Dołączył: 6.01.2008
Skąd: Wrocław

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


Ja w tym celu tworzę sobie obiekt globalny w tablicy GLOBALS i w celu skrócenia kodu odwołuję się do niego przez funkcję (nie będącą w żadnej klasie):
  1. <?php
  2. $GLOBALS['sql'] = new Sql();
  3.  
  4. function sql()
  5. {
  6. return $GLOBALS['sql'];
  7. }
  8.  
  9. //i teraz można już używać ten obiekt wszędzie tak:
  10. sql()->query(...);
  11. ?>


Jeżeli zależy nam na singletonie to można oczywiście zastosować zwykły singleton i dopisać sobie taką funkcję:
  1. <?php
  2. function sql()
  3. {
  4. return Sql::getInstance();
  5. }
  6. ?>


Idea polega na tym aby skrócić kod odwołania. Prościej i szybciej jest używać sql()->query() niż Sql::getInstance()->query();

Jeżeli chodzi o tworzenie obiektu nadrzędnego, po którym będą dziedziczyły wszystkie inne to nie polecam tego rozwiązania. W pewnym sensie zmusza ono programistę do dziedziczenia po tej klasie co może czasami okazać się niewygodne.
Go to the top of the page
+Quote Post
Black-Berry
post
Post #24





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

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


no to teraz mi już namieszałeś totalnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Znacznie bardziej podoba mi się Twoje rozwiązanie, ale poprzednicy twierdzili zupełnie inaczej.

Przy okazji nasuwa mi się pytanie. Skoro znacznik global ma zostać usunięty z PHP w przyszłości to jak to się ma do tablicy $GLOBALS? tez ma zostać usunięta ?
Go to the top of the page
+Quote Post
em1X
post
Post #25





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


No pewnie, że namieszał.

Jeżeli chcesz przechowywać dane konfiguracyjne to zapoznaj się ze wzorcem Registry.

Jeżeli chcesz skrócić sobie notację, możesz utworzyć metodę-osłonkę w swojej klasie:
  1. <?php
  2. class X {
  3.  public function query($sql)
  4.  {
  5.  // przykład
  6.  return $this->getDatabase()->query($sql);
  7.  }
  8. }
  9. ?>


Ten post edytował em1X 17.02.2008, 12:49:50
Go to the top of the page
+Quote Post
Black-Berry
post
Post #26





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

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


@em1X tego typu osłonka sprawdza się świetnie. Wielkie dzięki za sugestie. @Cotter Za pomysł ze skróceniem notacji też dziękuję. Wydaje mi się jednak, że obiekt po którym dziedziczą wszystkie inne obiekty to dobry pomysł bo mogę sobie podpinać wtyczki do całego systemu w bardzo wygodny sposób. O to co udało mi się sklecić. Proszę o komentarze.

  1. <?php
  2. abstract class edc_object
  3. {  
  4. /* Pobieranie instancji singletona */
  5. public function db_driver(){ 
  6. return mysql_db_driver::get_instance();
  7. }
  8.  
  9. /* Pomost dla query */
  10. public function query($sql){ 
  11. return $this->db_driver()->query($sql);
  12. }
  13.  
  14. /* Pomost dla result */
  15. public function fetch_row($result=""){ 
  16. return $this->db_driver()->fetch_row($result);
  17. }
  18.  
  19. /* Tutaj zbiór przydatnych funkcji też jako singleton. Nie wiem czy to dobry sposób. */
  20. public function db_functions(){ 
  21. return db_functions::get_instance(); 
  22. }
  23. }
  24. ?>


Ten post edytował Black-Berry 17.02.2008, 15:38:05
Go to the top of the page
+Quote Post
em1X
post
Post #27





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


1) dużo lepiej niż było na początku (IMG:http://forum.php.pl/style_emoticons/default/czarodziej.gif)
Trzeba pisać, pisać i pisać.. wszystko opiera się na doświadczeniu.

2) proponuję kupić sobie tą książkę. Na pewno Ci się przyda, bo wszystko u czym tutaj pobieżnie pisaliśmy, w tej książce jest opisane od podstaw, zaczynając od wzorców projektowych i ciekawych metod programowania obiektowego.
Go to the top of the page
+Quote Post
Black-Berry
post
Post #28





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

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


boje się że mi życia na naukę braknie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Dzięki wielkie. Zaopatrzę się w nią bo doszedłem chyba do etapu w którym trzeba zmienić swój punkt widzenia o programowaniu w PHP.

Pozdrawiam.

Ten post edytował Black-Berry 17.02.2008, 17:01:24
Go to the top of the page
+Quote Post

2 Stron V  < 1 2
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: 3.01.2026 - 18:15