Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] problem z dostępem do zmiennej
marcinek37
post
Post #1





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

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


Na wstępie zaznaczę, aby nie doszukiwać się sensu w poniższym kodzie
chcę jedynie zrozumieć zasadę działania

mamy 4 pliki - dla ułatwienia do pobrania tutaj: http://www.speedyshare.com/a9FEG/test.rar

index.php
  1. <?php
  2. include_once('config.php');
  3. include_once('klasa.php');
  4. $router = new Klasa();
  5. ?>


config.php
  1. <?php
  2. $zmienna1 = 'jeden';
  3. $zmienna2 = 'dwa';
  4.  
  5. function funkcja(){
  6. global $zmienna2;
  7. echo $zmienna2;
  8. }
  9. ?>


klasa.php
  1. <?php
  2. class Klasa{
  3.  
  4. public function __construct(){
  5. include_once('kontroler.php');
  6. }
  7.  
  8. }
  9. ?>


kontroler.php
  1. <?php
  2. include('config.php');
  3. echo $zmienna1;
  4. echo funkcja();
  5. ?>


po uruchomieniu pojawi się błąd, bo dwa razy jest includowany plik config.php (zrobiłem to umyślnie)
- gdy usunie się includowanie pliku config.php w pliku index.php, pojawi się komunikat "jeden"
- gdy pozostawi się includowanie pliku config.php w pliku index.php, a usunie się go w pliku kontroler.php, pojawi się komunikat "dwa"

zależy mi na tym, aby plik z ważnymi zmiennymi i funkcjami był includowany raz i pokazywał się komunikat "jeden dwa"
mam listę pewnych zmiennych, które są mi potrzebne w wielu miejsach, tam samo jak funkcje, które je "wciągają" i są w jakiś sposób przetwarzane
w takim układzie jest to niemożliwe, a tworzenie dwóch tych samych plików jest bez sensu
co mam zrobić? jak Wy dajecie sobie z tym radę?

Ten post edytował marcinek37 9.02.2014, 02:21:32
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
marcinek37
post
Post #2





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

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


znalazłem coś takiego:
  1. <?
  2. class Registry{
  3. private static $reg = array();
  4.  
  5. public static function add($key, $value){
  6. self::$reg[$key] = $value;
  7. }
  8.  
  9. public static function add_array($array){
  10. foreach($array AS $key => $value){
  11. self::$reg[$key] = $value;
  12. }}
  13.  
  14. public static function get($key){
  15. return self::$reg[$key] ? self::$reg[$key] : null;
  16. }
  17.  
  18. public static function delete($key){
  19. unset(self::$reg[$key]);
  20. }
  21.  
  22. }
  23.  
  24. $a = Registry::add('zmienna', 'wartość');
  25. echo Registry::get('zmienna');
  26. ?>


przyznam, że to naprawdę świetna sprawa, jest tylko jeden duży problem - jeśli w pliku config.php mam 50 zmiennych, będę musiał 50 razy używać metody add()
chyba że wszystko wrzucę do jednej tablicy i użyję metody add_array(), czego wolałbym uniknąć

myślę nad wprowadzeniem kolejnej metody, która "zasysałaby" wszystkie zmienne ze wskazanego pliku - czy to dobry pomysł? no i jak to zrobić?

Ten post edytował marcinek37 9.02.2014, 13:26:20
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: 26.12.2025 - 23:37