Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmienna zewnętrzna
Forum PHP.pl > Forum > PHP
.radex
Czasami miałem takie problemy, ale rozwiązywałem je w inny sposób, teraz muszę znać odpowiedźtongue.gif :

  1. <?php
  2. $config['default_lang'] = 'pl';
  3.  
  4. function selectLang($name){
  5. include(CMS_LANG_PATH.$config['default_lang'].'/'.$name.'.php');
  6. }
  7. ?>


Nie może działać ponieważ $config['default_lang'] jest zmienną zewnętrzną. Co innego z CMS_LANG_PATH bo jest to stała widoczna dla całego pliku

Wiem że mogę zrobić default_lang jako stałą ale w innych sytuacjach tak nie da się.

( hmm... może jakiś operator? np. w c++ jest ::, ale np. ::$test nie działa)
pbnan
  1. <?php
  2. function selectLang($name){
  3. global $config;
  4. include(CMS_LANG_PATH.$config['default_lang'].'/'.$name.'.php');
  5. }
  6. ?>

? winksmiley.jpg
.radex
hmm... globale to jakaś myśl, ale nie działa:/

Kod błędu:

Warning: selectlang(http://localhost/wtrmln/langs//error.php): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in D:\Moje Dokumenty\Radex\Server\wtrmln\config.php on line 70

Warning: selectlang(): Failed opening 'http://localhost/wtrmln/langs//error.php' for inclusion (include_path='.;D:\Moje Dokumenty\Radex\extras\xampp\php\pear\') in D:\Moje Dokumenty\Radex\Server\wtrmln\config.php on line 70
snipe
może plik nie istnieje albo nie masz uprawnień? a swoja droga bez sensu jest dawać w tym przypadku zmienną globalną w środku funkcji korzystającej z niej tongue.gif
.radex
nie nie. Nie rozumiesz problemu. Proboje otworzyc
http://localhost/wtrmln/langs/pl/error.php

a on chce otworzyc http://localhost/wtrmln/langs//error.php

ponieważ nie widzi zmiennej config

EDIT:

choć racja, powinno być errors, ale to nie zmienia problemu

EDIT:

var_dump zwraca wszystko poprawnie, ale nie ma na liście default_lang

Hah.... głupie niedouważenie. Zmienna została zdefiniowana po sprawdzeniu bazy danych, tzn. po exicie:P
snipe
  1. <?php
  2. global $config;
  3. $config['default_lang'] = 'pl';
  4.  
  5. function selectLang($name){
  6. include(CMS_LANG_PATH.$config['default_lang'].'/'.$name.'.php');
  7. }
  8. ?>


działa??
.radex
nie, nie działałoby. Patrz dopisek poprzedniego posta
devnul
to może jak chciałeś operator to tak
  1. <?php
  2. class config { 
  3.  static public $config=array();
  4. }
  5.  
  6. //nadanie wartości
  7. config::$config['cos']='jakas_wartosc';
  8.  
  9. // i w dowolnym miejscu
  10. echo config::$config['cos'];
  11. ?>
.radex
Hah.... głupie niedouważenie. Zmienna została zdefiniowana po sprawdzeniu bazy danych, tzn. po exicie:P

Jeszcze raz?
devnul
ja chyba czytać nie umiem - ale co jeszcze raz? bo tak jakoś to troche z kontekstu wyrwane chyba.
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.