Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Includowanie pliku korzystającego ze zmiennych
Gelio
post 9.07.2013, 23:08:04
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 2
Dołączył: 28.02.2009

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


Witam. Natknąłem się ostatnio na problem, otóż mam oddzielny plik php z klasą od obsługi całej bazy danych oraz drugi plik z konfiguracją i innymi rzeczami, które można dzięki temu łatwo zmienić. Sęk w tym, że w pliku konfiguracyjnym mam dane do bazy danych, z których korzysta bezpośrednio plik z klasą obsługi bazy danych. Myślałem, że jeżeli zaincluduję plik z obsługą bazy dopiero po zdefiniowaniu zmiennych w pliku konfiguracyjnym to wszystko będzie dobrze, jednak cały czas dostaję "Notice: Undefined variable".

Problem może wydawać się zawiły dlatego przykład kodu. config.inc.php:
  1. <?php
  2. $sqlIP = "localhost";
  3. $sqlUser = "root";
  4. $sqlPass = "root";
  5. $sqlDatabase = "x";
  6. include "sql.inc.php";
  7. ?>

sql.inc.php:
  1. <?php
  2. class SQL
  3. {
  4. protected $connect;
  5. protected $error;
  6. protected $lastQuery;
  7. function __construct()
  8. {
  9. $error = false;
  10. $connect = mysql_connect($sqlIP, $sqlUser, $sqlPass);
  11. if(!$connect)
  12. {
  13. $error = true;
  14. return;
  15. }
  16. mysql_select_db($sqlDatabase);
  17. }
  18. public function query($query)
  19. {
  20. if(!$connect)
  21. {
  22. $error = true;
  23. return false;
  24. }
  25. $lastQuery = mysql_query($query);
  26. return $lastQuery;
  27. }
  28. }
  29. ?>

Dodatkowo dostaję taki sam notice kiedykolwiek wykonuję funkcję query z klasy SQL.
Jak temu zaradzić? Co powinienem zrobić?

@edit
Z notice'ami związanymi z "Undefined variable" wewnątrz klasy sobie poradziłem już, zapomniałem zmienić $x na $this->x. Nadal jednak zostaję z problemem korzystania ze zmiennych $sqlIP, $sqlUser, $sqlPass, $sqlDatabase

Ten post edytował Gelio 9.07.2013, 23:12:15
Go to the top of the page
+Quote Post
widmo_91
post 9.07.2013, 23:15:00
Post #2





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

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


problem jest w zasięgu zmiennych, możesz te zmienne konfiguracyjne zadeklarować jako globalne jednak tego nie polecam.
Polecam takie rozwiązanie:

  1. function __construct($sqlIP, $sqlUser, $sqlPass, $sqlDatabase)


i wywoływanie obiektu :

  1. $sql = new SQL($sqlIP, $sqlUser, $sqlPass, $sqlDatabase)
Go to the top of the page
+Quote Post
com
post 9.07.2013, 23:22:23
Post #3





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


problemy problemami ale jak dla mnie idea pliku config.inc.php traci sens jeśli do config wrzucasz include "sql.inc.php"; raczej powinno być na odwrót do sql.inc.php wrzuć include "config.inc.php"; wink.gif
Go to the top of the page
+Quote Post
Gelio
post 10.07.2013, 00:29:03
Post #4





Grupa: Zarejestrowani
Postów: 33
Pomógł: 2
Dołączył: 28.02.2009

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


widmo_91 - dzięki. O tym nie pomyślałem.
com - chodziło mi o to, aby stworzyć jeden plik, który należy includować, w którym byłyby zawarte wszystkie ustawienia oraz funkcje jednocześnie, dlatego chciałem do configa includować.

Temat do zamknięcia. Dziękuję za pomoc.
Go to the top of the page
+Quote Post
com
post 10.07.2013, 23:44:19
Post #5





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no ja Cie rozumiem, ale tak czy tak zawsze to się robi na odwrót, bo config dodajesz tam gdzie go potrzebujesz i możesz w nim przechowywać milion rzeczy, bo tak trochę ten plik nie ma sensu ale jak tam uważasz 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 Wersja Lo-Fi Aktualny czas: 12.07.2025 - 14:39