Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Znikająca zmienna w includowanym pliku
Forum PHP.pl > Forum > PHP
MMySlime
Witam,
otóż mam pewien problem. W pliku przyłóżmy 2 mam sobię zmienną. Plik 2 został zaincludowany poprzez plik 1. Lecz z kolei plik 1 został zaincludowany przez plik 0. Gdy próbuję odczytać zmienną x w pliku 1 lub 0 nie da się, co może być przyczyną? Jeszcze dołączę pliki dla rozjaśnienia.
0.
  1. <?php
  2.  
  3. /**
  4.  * PHP Version Check
  5.  */
  6.  
  7. if(phpversion() < 5.3) die('Your version of php is too small, please repeair this.<br />Your version: '.phpversion().'<br />Remaing version: 5.3');
  8.  
  9. /**
  10.  * Starters
  11.  */
  12.  
  13.  
  14. /**
  15.  * Include all helpers
  16.  */
  17.  
  18. foreach (glob('stc_helpers/First/*.php') as $file)
  19. require $file;
  20.  
  21. foreach (glob('stc_helpers/Last/*.php') as $file)
  22. require $file;
  23.  
  24. /**
  25.  * Core implode
  26.  */
  27.  
  28. push('init.php','stc_core/');
  29.  
  30. ?>


Funkcja push(); dołącza plik z tym że najpierw sprawdza czy jest w folderze i zamiast wywalać nieprzyjemnego Notica czy Fatal Errora zwraca wiadomość do wykorzystania w zmiennej.

1. Czyli init.php
  1. <?php
  2.  
  3. /**
  4.  * First: DataBase informations
  5.  */
  6.  
  7. push('db.php','stc_core/');
  8.  
  9. /**
  10.  * Second: Downloading data from DB and importing it to array
  11.  */
  12.  
  13. push('config.php','stc_core/');
  14.  
  15. /**
  16.  * Third: Define important vars
  17.  */
  18.  
  19. push('define.php','stc_core/');
  20.  
  21. ?>

Czyli po kolei dodaję pliki do systemu
2. Czyli inaczej db.php
  1. <?php
  2.  
  3. /**
  4.  * Making prefix
  5.  */
  6.  
  7. define('PREFIX','cms_');
  8.  
  9. /**
  10.  * Setting var
  11.  */
  12.  
  13. $mysql = new CMS_DBH();
  14.  
  15. /** You can edit **/
  16.  
  17. $mysql->host = '...';
  18. $mysql->user = '...';
  19. $mysql->pass = '...';
  20. $mysql->base = '...';
  21.  
  22. ?>

Jeszcze raz powtórzę że właśnie chcę odzdziałowywać na zmiennej $mysql. Dziękuję za pomoc.
CuteOne
Includując plik wewnątrz funkcji jego zmienne są dostępne lokalnie (tylko w ciele funkcji)
MMySlime
Czyli muszę zastosować returna? Czy jednak muszę korzystać ze standardowego require?
CuteOne
Return to kiepski pomysł, pamiętaj, że czasami w includowanym pliku mogą pojawić się dwie lub więcej zmiennych

Najprostsze rozwiązanie aby nie zaśmiecać indexu
require.php
  1. require 'xx.php';
  2. require 'yy.php';
  3. //itd..


index.php
  1. require 'require.php';
MMySlime
Właśnie tak robię ^^, dzięki za pomoc!
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.