Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [OOP, eval()] Przetworzenie pliku
Forum PHP.pl > Forum > PHP
Kikert
Cześć,
musiałem zmierzyć się z następującym problemem:

Należy z pliku z przykładową treścią i zawartymi w niej statycznymi właściwościami obiektów (np. Config::$db_host) pobrać zawartość i zapisać ją do zmiennej z podmienionymi wartościami. Z niewiadomych przyczyn nie mogę podmienić wartości zmiennych.

Plik z treścią:
  1. Test Config::$db_host


Pobranie zawartości pliku (fragment klasy):
  1. public function read() {
  2.  
  3. @ $this->content = file_get_contents($this->path);
  4.  
  5. if (empty($this->content)) { Error::add('File -> read()  Nie mozna odczytac zawartosci pliku '.$this->path); }
  6.  
  7. return $this;
  8.  
  9. }


Próba przetworzenia zmiennych (fragment klasy):
  1. $cfile = new File(MAINPATH.'media'.PS.'includes'.PS.$this->params['inc'].'.php','r');
  2. $temp = $cfile->open()->read()->getContent();
  3. $temp = addslashes($temp);
  4. //print $temp;
  5. eval('print $temp;');
  6. //self::$component = eval("print \$temp");


Skrypt w obecnej postaci generuje tekst bez zmian względem pliku. Jakieś pomysły?

Z góry dzięki biggrin.gif
erix
Fajnie, że nazwy metod cokolwiek mówią o tym, czego używasz.
Kikert
OK, najprościej:

Mam zapisać tekst z pliku do właściwości statycznej w klasie.

$temp = $cfile->open()->read()->getContent(); Ta linijka to pobranie treści pliku, nic się nie zmienia w tym miejscu.

Teraz chcę zapisać we właściwości statycznej self::$component ten tekst z podmienionymi wartościami. Jednakże, kiedy interpreter PHP zamienia właściwości statyczne z kodu (jak Config::$db_host), nie odbywa się to poprawnie - zamieniana jest tylko druga część (finalnie daje to Config::, gdyż nie zdeklarowano zmiennej $db_host).

Jak to ustawić w eval'u?
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.