Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa języków
Forum PHP.pl > Forum > PHP
Mazur_pl
Próbuje napisać prostą klasę języków:
  1. <?php
  2.  class language {
  3.  
  4.  public $lang_dir;
  5.  public $default_lang;
  6.  public $lang;
  7.  
  8.  public function lang_method($method)
  9.  {
  10.  if($method == 'GET')
  11.  {
  12.  if(!(isset($this->default_lang)))
  13.  {
  14.  die('Nie wybrano jezyka');
  15.  }
  16.  if(isset($_GET['lang']))
  17.  {
  18.  $this->lang = $_GET['lang'];
  19.  }
  20. else
  21.  {
  22.  $this->lang = $this->default_lang;
  23.  }
  24.  }
  25. else
  26.  {
  27.  die('Nie wybrano metody');
  28.  }
  29.  } //END lang_method();
  30.  
  31.  public function install_page($name)
  32.  {
  33.  if(file_exists($this->lang_dir.$this->lang.$name))
  34.  {
  35.  require($this->lang_dir.$this->lang.$name);
  36.  }
  37. else
  38.  {
  39.  die('Plik nie istnieje.');
  40.  }
  41.  } //END install_page();
  42.  }
  43.  
  44.  $lang = new language;
  45.  
  46.  $lang->lang_dir = './lang/';
  47.  $lang->default_lang = 'pl/';
  48.  
  49.  $lang->lang_method('GET');
  50.  
  51.  $lang->install_page('lang.class.php');
  52.  
  53.  echo $lg['hello'];
  54.  
  55. ?>


Mam folder:
lang/ w nim pl/ oraz en/ ,a w nich plik lang.class.php .

Teraz kiedy dam echo $lg['hello'] nic nie wyświetla ,a w powinno w zależności od języka :/ . Co zrobiłem źle?
strife
Zobacz co zawiera zmienna $lg:

  1. <?php 
  2. echo '<pre>';
  3. var_export( $lg );
  4. echo '</pre>'; 
  5. ?>


Wydaje mi się, że problemem, który masz w skrypcie jest zasięg zmiennych, zauważ, że dane z pliku z językiem zostają wczytane w obrębie funkcji, dlatego na zewnątrz nie widzisz tej zmiennej, możesz ową zmienną wyciągać na zewnątrz poprzez return, a następnie przypisać ją do zmiennej.

  1. <?php
  2. public function install_page($name)
  3.  {
  4.  if(file_exists($this->lang_dir.$this->lang.$name))
  5.  {
  6.  require($this->lang_dir.$this->lang.$name);
  7.  return $lg;
  8.  }
  9. else
  10.  {
  11.  die('Plik nie istnieje.');
  12.  }
  13.  } //END install_page();
  14.  
  15. // ....
  16. $lg = $lang->install_page('lang.class.php');
  17. echo $lg['hello'];
  18. ?>


Pozdrawiam.

PS. Gdybyś miał raportowanie błędów ustawione na E_ALL od razu byś to zauważył ; )
Mazur_pl
Wielkie ( ++ ) dla ciebie , już wszystko chodzi :-). Bardzo dziękuje.
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.