![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 0 Dołączył: 22.03.2008 Skąd: Janów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
Mam problem z dokladnym zrozumieniem koncowki kodu. Kod zaczerpnalem z kursów php i mysql. Kod wyglada nastepujaco :
Kod <?php class cTemplate { var $assign; // tablica przechowujaca indeks var $parsed; // zmienna odpowiadajaca za wczytanie pliku html do pliku php function parse ($_file_name) // funckcja wczytujaca plik { if (!file_exists($_file_name)) // jezeli plik istnieje .. { echo "Nie znaleziono pliku: ".$_file_name; return 0; } $this->parsed = file_get_contents($_file_name, 500000); // wczytuje plik do zmiennej parsed max filesize = 500000 W CALOSCI $i = 0; // licznik w tablicy if (isset($this->assign)) // jezeli jest tablica assign wtedy.. { foreach ($this->assign as $key => $value) { $source[$i] = "{\$".$key."}"; // do tablicy soruce przypisuje to co jest kluczem $destination[$i] = $value; // a do destination przypisuje wartosc tablicy source $i++; // nastepnie zwiekszam licznik tablic o 1 } } if (!isset($source)) return $this->parsed; return $this->parsed = str_replace($source, $destination, $this->parsed); } } ?> Nie do konca rozumiem tych linijek Kod if (!isset($source)) return $this->parsed; return $this->parsed = str_replace($source, $destination, $this->parsed); Dlaczego jezeli nie zaistnieje tablica $source to funkcja ma zwrócic zmienna parsed; odpowiadajaca za wczytanie pliku? Oraz na czym polega druga linijka mianowicie str_replace? Prosilbym o wyjasnienie. Thks |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 274 Pomógł: 54 Dołączył: 2.05.2006 Skąd: Nadarzyn Ostrzeżenie: (0%) ![]() ![]() |
jak nie ma zmiennych 'do przekazania' ( czyli zmienna $source nie istnieje ) to zwraca tylko kod a jak cos jeszcze trzeba przeobic to wywoluje najpierw str_replace ( zobacz z dokumentacji jak dziala podawanie tablic jako argumentów tej funkcji ) i zwraca kod. to str replace zamienia {$zmienna} => wartosc_zmiennej_zmienna.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 12 Dołączył: 9.10.2008 Skąd: Tricity.Rumia() Ostrzeżenie: (0%) ![]() ![]() |
Ponieważ jeżeli nie ma tablicy $source to nie trzeba nic zmieniać w templacie i wyświetlić go tak jak jest.
Jeżeli tablica jest wywoływana jest funkcja str_replace(). Jest ona opisana w manualu PHP: http://pl.php.net/manual/pl/function.str-replace.php ponieważ jest po Eng a prośba o wyjaśnienie: mixed [b]str_replace[/b] ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) funkcja zwraca string albo tablicę w których wszsytkie wystąpienia zmiennej $search w zmiennej $subject są zastępowane wartością parametru $replace Powinieneś używać tej funkcji jeżeli nie potrzebujesz udogodnień dostępnych w preg_replace Jeżeli $search i $replace są tablicami wtedy str_replace() bierze odpowiadające sobie wartości każdej z tablicy. Jeżeli w tablicy $replace jest mniej wartości funkcja domyślnie wstawia tam pusty ciąg znaków. Jeżeli $search jest tablicą a $replace jest sringiem to każda wartość z tablicy jest zastępowana tym stringiem, Miejwięcej słowo w słowo z manuala. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 08:02 |