2014-10-21 2 views
0

Я пытался исправить мой шаблонный класс, но он не работает,Шаблон класса нетрудоспособный

, что не работа была: [@title] не заменяется.

Код:

protected $file; 
protected $values=array(); 

public function __construct($file){ 
    $this->file = $file; 
} 

public function set($key, $value){ 
    $this->values[$key] = $value; 
} 

public function output() { 
    if (!file_exists($this->file)) { 
     return "Pagina kan niet gevonden worden."; 
    } 
    $output = file_get_contents($this->file); 

    foreach ($this->values as $key => $value) { 
     $tagToReplace = "[@$key]"; 
     $output = str_replace($tagToReplace, $value, $output); 
    } 
    return $output; 
} 

Надеюсь кто-то может мне помочь, спасибо заранее.

+0

Какое значение '$ tagToReplace'? Это действительно '[@title]'? Во-вторых, какова ценность '$ output'? Что такое исходный код файла шаблона? Согласно документам [file_get_contents] (http://us3.php.net/manual/en/function.file-get-contents.php), он возвращает 'false' при ошибке. –

+0

Да, это действительно [@title], потому что в другом файле я сделал это: include ('class/tpl.class.php'); $ me = новый шаблон ("me.tpl"); $ me-> set ("username", "brandon"); $ me-> set ("title", "Test"); echo $ me-> output(); – Ripz

ответ

0

$ - символ начала для переменной php. Простой уход.

$tagToReplace = "[@\$key]"; 
$output = str_replace($tagToReplace, $value, $output); 

// редактировать
Я тестировал код. В моей тестовой среде все работает нормально.

$test = new Tpl(__DIR__."/test.txt"); 
$test->set("test", "huhu123"); 
$test->set("asdf", "xcv"); 
var_dump($test->output()); 

TestFile:

kjasdfgkashf [@test] 

Выход:

string(20) "kjasdfgkashf huhu123" 
+0

«$ key» нужно интерпретировать, поэтому избежать этого не решит проблему. –

+0

Вы правы, отредактировали мой ответ и добавили тестовый пример. – perryflynn

+0

string (6038) « Это то, что он дает мне как результат. Что я сделал не так? $ test = new Шаблон (__ DIR __."/Me.tpl "); $ test-> set (" title " , "huhu123"); $ test-> set ("asdf", "xcv"); var_dump ($ test-> output()) ?> – Ripz

Смежные вопросы