Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Includowanie pliku korzystającego ze zmiennych
Forum PHP.pl > Forum > PHP
Gelio
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
widmo_91
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)
com
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
Gelio
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.
com
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.