Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Korzystanie z zewnętrznej zmiennej
MMySlime
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 1
Dołączył: 22.08.2012

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


Witam,

Stworzyłem więc sobie klasę łączącą się z bazy danych. Jak z niej korzystać w innej klasie?

Dopowiem że nie chcę tworzyć nowego połączenia tylko korzystać ze zmiennej utworzonej w nie klasie ale w statycznym pliku php.
Zmienna np. $db
Mianowicie mam $db->select();

Próbowałem za pomocą Extends oraz self::select(); ale jak mówiłem, nie chcę się kolejny raz łączyć z bazą.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Najzwyczajniej w świecie przekaż tą zmienną jako argument konstruktora, a w nim przypisz ją jako właściwość obiektu?
Go to the top of the page
+Quote Post
MMySlime
post
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 1
Dołączył: 22.08.2012

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


A można trochę jaśniej? smile.gif
Za bardzo w OOP nie jestem obeznany :/
Go to the top of the page
+Quote Post
Damonsson
post
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Ja bym utworzył klasę np. class Db extends PDO, gdzie w konstruktorze byłoby połączenie z bazą danych między innymi, a w modelu(statycznym pliku php) po prostu tworzył sobie nowy obiekt klasy Db ($db = new Db()).

I odwoływał się w modelu(statycznym pliku php) normalnie tak jak chcesz $db->select()

Jak chcesz wykonać jakieś zapytanie to przecież musisz się połączyć z bazą danych, więc jak nie chcesz się łączyć? Nie rozumiem tego.

Ten post edytował Damonsson 19.11.2012, 20:50:13
Go to the top of the page
+Quote Post
MMySlime
post
Post #5





Grupa: Zarejestrowani
Postów: 45
Pomógł: 1
Dołączył: 22.08.2012

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


Tak więc:
1. Wykonałem sobię klasę łączącą z bazą dancyh poprzez PDO, jest includowana jako pierwsza w pliku.
2. Zmienną połączyłem się w pliku statycznym "poprzez" tą klasę.
3. Chciałbym teraz zrobić klasę Wykorzystującą tą zmienną tylko że jak próbuję odnieść się do niej to wywala mi błąd że taka zmienna nie istnieje.

Może ja pokażę plik statyczny (index.php):
  1. foreach (glob('Classes/First/*.php') as $file)
  2. include $file;
  3.  
  4. $db = new DBH();
  5.  
  6. $db->host = 'host';
  7. $db->user = 'user';
  8. $db->pass = 'pass';
  9. $db->base = 'base';
  10.  
  11. $db->connect();
  12.  
  13. foreach (glob('Classes/After/*.php') as $file)
  14. include $file;
  15.  
  16. $auth = new Auth();
  17.  
  18. if(!empty($_POST[$auth->post_nick]) && !empty($_POST[$auth->post_pass])){
  19.  
  20. $auth->login();
  21.  
  22. }


I chciałbym zmienną db wykorzystać w tej klasie, jednak jest błąd :/
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Operujesz na obiektach, nie klasach.
2.
  1. $dbh = new DBH();
  2.  
  3. $auth = new Auth($dbh);
  4.  
  5. // ----
  6.  
  7. class Auth {
  8. private $dbh;
  9.  
  10. public function __construct(DBH $dbh) {
  11. $this->dbh = $dbh;
  12. }
  13. }
Go to the top of the page
+Quote Post
MMySlime
post
Post #7





Grupa: Zarejestrowani
Postów: 45
Pomógł: 1
Dołączył: 22.08.2012

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


Wielkie dzięki, właśnie o to chodziło wink.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 Aktualny czas: 22.08.2025 - 04:31