Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Parser, za każdym razem ładuje na początku te same pliki
gorky_park
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 8.07.2007

Ostrzeżenie: (0%)
-----


Do rzeczy, kod parsera:
  1. <?php
  2. DEFINE ('D_TPL', 'template/');
  3.    
  4.    class Parser {
  5.        
  6.        public $UnparsedHtmlCode = array();
  7.        public $ParsedTpl = array();
  8.        public $TplBlocks = array();
  9.        public $LastLoadedTpl;
  10.        
  11.        public function LoadTemplate($file) {
  12.            if(!file_exists(D_TPL.$file.'.tpl')) {
  13.                echo "Couldn't load followed file to parse:<b> ".D_TPL.$file.'.tpl'."</b>< br/>";
  14.            }
  15.            else {
  16.                $FileHandle = fopen(D_TPL.$file.'.tpl', "r");
  17.                    flock($FileHandle, 2);
  18.                            $this -> UnparsedHtmlCode[] = fread($FileHandle, filesize(D_TPL.$file.'.tpl'));
  19.                    flock($FileHandle, 3);
  20.            }
  21.        foreach($this -> UnparsedHtmlCode AS $HtmlCode) {
  22.            echo $HtmlCode;
  23.        }
  24.        }
  25.            
  26.  
  27.    }
  28. ?>

w ten sposob go uruchamiam:
  1. <?php
  2. $objParse = new Parser();
  3.    $objParse -> LoadTemplate('head');
  4.    $objParse -> LoadTemplate('single_entry');
  5.    $objParse -> LoadTemplate('tail');
  6. ?>


problem polega w tym, że funkcja w pierwszym kroku ładuje plik "head", potem "head" oraz "single_entry" a w kroku ostatnim "head", "single_entry", "tail". Co otrzymuje w rezultacie? "Wypluty" kod html z 3 x powtorzonym kodem "head", 2 x "single_entry" i jeden raz "tail".

Pytanie: co poprawić, aby tablica UnparsedHtmlCode zawierała finalnie załadowane dane pliki tyle razy, ile nastepuje wywołanie metody dla konkretnego pliku .tpl?
Go to the top of the page
+Quote Post
PUPI
post
Post #2





Grupa: Zarejestrowani
Postów: 69
Pomógł: 5
Dołączył: 6.02.2004
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Kod działa dokładnie tak jak powinien. Możesz zrobić to np. tak:
  1. <?php
  2. DEFINE ('D_TPL', 'template/');
  3.  
  4.   class Parser {
  5.      
  6.       public $UnparsedHtmlCode = array();
  7.       public $ParsedTpl = array();
  8.       public $TplBlocks = array();
  9.       public $LastLoadedTpl;
  10.      
  11.       public function LoadTemplate($file) {
  12.           if(!file_exists(D_TPL.$file.'.tpl')) {
  13.               echo "Couldn't load followed file to parse:<b> ".D_TPL.$file.'.tpl'."</b>< br/>";
  14.           }
  15.           else {
  16.               $FileHandle = fopen(D_TPL.$file.'.tpl', "r");
  17.                   flock($FileHandle, 2);
  18.                           $this -> UnparsedHtmlCode[] = fread($FileHandle, filesize(D_TPL.$file.'.tpl'));
  19.                   flock($FileHandle, 3);
  20.           }
  21.       }
  22.       public function Display(){
  23.           foreach($this -> UnparsedHtmlCode AS $HtmlCode) {
  24.           echo $HtmlCode;
  25.       }
  26.       }
  27.  
  28.   }
  29. ?>

i użycie
  1. <?php
  2. $objParse = new Parser();
  3.   $objParse -> LoadTemplate('head');
  4.   $objParse -> LoadTemplate('single_entry');
  5.   $objParse -> LoadTemplate('tail');
  6.   $objParse -> Display();
  7. ?>
Go to the top of the page
+Quote Post
gorky_park
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 8.07.2007

Ostrzeżenie: (0%)
-----


ałaaaałała... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) no jasne to takie oczywiste. Wyswietlanie tablicy $UnparsedHtmlCode umiesciłem tylko po to, aby zobaczyc czy we własciwy sposo bedzie sie wyswietlac. Zamiast oczywiscie zrobic to w pliku gdzie includowana jest klasa zrobiłem to jako krok przy kazdym wywolaniu funkcji. No ale najwazniejsze to dostrzec swój błąd i go więcej nie powtarzac. Zwykłe gapiostwo.
Dzięki chłopie wielkie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pomogłes.
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: 1.10.2025 - 17:49