Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem ze zrozumieniem kodu, klasa templatowa
endr1u
post
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
Go to the top of the page
+Quote Post
Rafal Filipek
post
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.
Go to the top of the page
+Quote Post
pinochet
post
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 08:02