Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa w klasie
Mephis
post
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 1
Dołączył: 16.12.2012

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


Witam.

Mam problem... Przeszukałem google pod podobnymi hasłami jak w temacie, lecz nie znalazłem odpowiedniego, działającego rozwiązania. A musi jakieś istnieć - chyba, że to co chcę zrobić, jest nieodpowiednie, lub istnieje owiele prostrzy spodób...

Mianowicie, mam dwie klasy: SQL i UserData. Pierwsza z nich służy do obsługi bazy danych. Druga będzie miała za zadanie zbierać z tej bazy różnego rodzaju informacje i odpowiednio je łączyć.

Klasę SQL wywołuję w taki sposób:
  1. require_once('inc/sql.class.php');
  2. $SQL = new SQL($sqlhost, $sqluser, $sqlpassword, $sqldatabase);

Baza łączy się w konstruktorze.

Próbowałem dołączać klasę w argumencie, lecz to nic nie dało.

W klasie Data pragnę odwoływać się do klasy SQL, ponieważ będę tam przeprowadzać wszelkie operacje oparte o dane użytkownika.
  1. class UserData {
  2. function getData() {
  3. $query = $SQL->query('zapytanie');
  4. }
  5. }


Jak zrobić coś tego typu?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
in5ane
post
Post #2





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Tutaj nie ma nic trudnego. Po prostu w swojej klasie Userdata zajmujesz się tylko tym, co ma ta klasa robić i zamiast tworzyć:
  1. require_once('inc/sql.class.php');
  2. $this->SQL = new SQL($sqlhost, $sqluser, $sqlpassword, $sqldatabase);
tworzysz w klasie SQL metodę
  1. public static function getInstance()
  2. {
  3. if (!self::$me)
  4. {
  5. self::$me = new Sql();
  6. }
  7.  
  8. return self::$me;
  9. }
dodatkowo musisz utworzyć zmienną
  1. private static $me = null;
i teraz w swojej klasie Userdata możesz się odwołać tak:
  1. Sql::instance()->query('SELECT * FROM users');
I bez tworzenia obiektu klasy Sql możesz odwoływać się do jej metod.

Ten post edytował in5ane 31.03.2014, 10:09:01
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: 13.10.2025 - 00:29