Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Korzystanie z jednej klasy w drugiej...pytanie?
Joachim Peters
post
Post #1





Grupa: Zarejestrowani
Postów: 196
Pomógł: 2
Dołączył: 1.03.2006

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


Witam,

Dopiero zaczynam przygode z klasami, dlatego proszę was o porade.
  1. <?php
  2. class SQL
  3. {
  4. // jakis kod klasy
  5. }
  6. $db = new SQL();
  7.  
  8. class fva
  9. { 
  10. function fva() 
  11. { 
  12. global $db; 
  13. $db->sql_query("SELECT * FROM jakas_tabela LIMIT 1"); 
  14. } 
  15.  
  16. }
  17. ?>

Czy ten skrypt jest do bani?
Bo dostałem taką opinie:
Cytat
po co globalny obiekt jak .. tylko w klasie potrzebuje ? pomijajac totalny bezsens tego rozwiazania to moze on jeszcze bledy powodowac.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
ikioloak
post
Post #2





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


Temat czesto poruszany na forum wiec szukaj. Podpowiem, czesto spotykanymi rozwiazaniami jest korzystanie z wzorca Singleton, lub przekazanie obiektu $db do metod fva.
Go to the top of the page
+Quote Post
eS...
post
Post #3





Grupa: Zarejestrowani
Postów: 367
Pomógł: 2
Dołączył: 4.03.2003
Skąd: C:/Windows/Temp

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


Hmm w sumie też tylko raczkuje w OOP ale może chodzi o to
  1. <?php
  2. class SQL{
  3.  // jakis kod klasy
  4. }
  5.  
  6.  
  7. class fva extends SQL{ 
  8.  
  9.  function fva() { 
  10. parent::sql_query('SELECT * FROM jakas_tabela LIMIT 1'); 
  11. //SQL::sql_query('SELECT * FROM jakas_tabela LIMIT 1'); 
  12.  } 
  13.  
  14. }
  15. ?>

rozumiem ze sql_query() to funkcja z klasy SQL

Jeżeli chodzi o kozystanie z jednej klasy(metod) w drugiej to chyba tylko dziedziczenie. Po co mu singleton?(nie krzyczcie wytłumaczcie)

Ten post edytował eS... 11.01.2007, 03:01:19


--------------------
Go to the top of the page
+Quote Post
splatch
post
Post #4





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


Proszę, zapamiętaj to jedno zdanie smile.gif
Global w klasach mówimy stanowcze NIE!


--------------------
Łukasz Dywicki
Independent Java and open source software consultant.
Blog - Java, OSGi, integracja oprogramowania..
Go to the top of the page
+Quote Post
Turgon
post
Post #5





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


eS...: Podpowiem Ci, że skoro dziedziczysz metoda sql_query staje się nie jako nową metodą klasy fva i nie musisz używać parent smile.gif . Po za tym polecam Ci poszukać o takmi wzorcu: "my regedit".


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
eS...
post
Post #6





Grupa: Zarejestrowani
Postów: 367
Pomógł: 2
Dołączył: 4.03.2003
Skąd: C:/Windows/Temp

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


No ok, rozumiem smile.gif ale z parent też zadziała? Naprawde w OOP jestem beginer


--------------------
Go to the top of the page
+Quote Post
em1X
post
Post #7





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

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


no raczej zadziała, skoro odwołujesz się do klasy, z której dziedziczysz (pod warunkiem, że nie jest metodą prywatną), tylko dalej nie rozumiem do czego dążysz biggrin.gif

I jak wspomnieli poprzednicy: pisz skrypty tak, zeby nie uzywac global'a. Global mozna uniknac stosujac wzorzec Singleton.

Ten post edytował em1X 12.01.2007, 17:07:07


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
eS...
post
Post #8





Grupa: Zarejestrowani
Postów: 367
Pomógł: 2
Dołączył: 4.03.2003
Skąd: C:/Windows/Temp

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


@em1X - ja tylko pytam, a global to nie mojego autorstwa. Ten topic nie jest w ogóle mojego autorstwa biggrin.gif


--------------------
Go to the top of the page
+Quote Post
Turgon
post
Post #9





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Z parent zadziała, ale to jest brzydkie ;] Według mnie napisz sobie klasę rejestr, w której będziesz składował instancje obiektów. Jakbyś nie wiedział instancje, to utworzone obiekty danej klasy ;]


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
eS...
post
Post #10





Grupa: Zarejestrowani
Postów: 367
Pomógł: 2
Dołączył: 4.03.2003
Skąd: C:/Windows/Temp

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


Cytat(Turgon @ 12.01.2007, 17:21:26 ) *
Z parent zadziała, ale to jest brzydkie ;] Według mnie napisz sobie klasę rejestr, w której będziesz składował instancje obiektów. Jakbyś nie wiedział instancje, to utworzone obiekty danej klasy ;]

Cóż mój błąd smile.gif. ale wyczytałem tak w jednej z książek .


--------------------
Go to the top of the page
+Quote Post
Joachim Peters
post
Post #11





Grupa: Zarejestrowani
Postów: 196
Pomógł: 2
Dołączył: 1.03.2006

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


Poczytałem trochę o singletonie, ale nadal nie wiem jak stosować to w praktyce.
Proszę o mały przykład użytkowania.
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #12





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




Z wzorcami to jest tak, że się nie powinno wdrażać na siłę.
http://forum.php.pl/index.php?showtopic=52...mp;hl=singleton
http://forum.php.pl/index.php?showtopic=59...mp;hl=singleton
http://forum.php.pl/index.php?showtopic=55...mp;hl=singleton
http://forum.php.pl/index.php?showtopic=55...mp;hl=singleton

  1. <?php
  2. class my_Class {
  3.  
  4. /**
  5.  * Zawiera instancję tej klasy
  6.  * @var object static
  7.  */
  8. private static $instance;
  9.  
  10. /**
  11.  * Testowa
  12.  * @var mixed
  13.  */
  14. public $zmienna;
  15.  
  16. private function __construct(){}
  17.  
  18. public static function getInstance(){
  19.  
  20. if (!self::$instance){
  21. self::$instance=new self();
  22. }
  23. return self::$instance;
  24. }
  25. }
  26.  
  27. class test {
  28.  
  29. public function __construct(){
  30. $obj=my_Class::getInstance();
  31. print $obj->zmienna.'<br />';
  32. $obj->zmienna="zostałam ustawiona w klasie test";
  33. }
  34.  
  35. public function odczytaj_raz_jeszcze(){
  36. $obj=my_Class::getInstance();
  37. print $obj->zmienna.'<br />';
  38. $obj->zmienna="i jeszcze raz mnie zmieniono";
  39. }
  40.  
  41. }
  42.  
  43. $obj=my_Class::getInstance();
  44. $obj->zmienna="zostałam ustawiona poza klasą test";
  45.  
  46. $test=new test();
  47.  
  48. print $obj->zmienna.'<br />';
  49.  
  50. $test->odczytaj_raz_jeszcze();
  51.  
  52. print $obj->zmienna.'<br />';
  53. ?>


Wnioskuję o uznanie tematu Singleton tematem spamem : ). Jest pełno.

Pozdrawiam.

Ten post edytował Cysiaczek 13.01.2007, 11:32:26


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
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 Aktualny czas: 22.08.2025 - 10:21