Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem ze zrozumieniem kodu
Forum PHP.pl > Forum > Przedszkole
endr1u
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
Rafal Filipek
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.
pinochet
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.
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.