I've a code with im working for.
class View
{
public $model;
public $function;
public $content;
public function __construct( $model )
{
$this->model = $model;
$this->templateLoader( get_class( $this->model ));
}
public function templateLoader( $model )
{
$template = "View/Layout/" . $model . ".tpl";
if ( file_exists( $template ))
{
$this->getContent( $template );
$this->searchForTags();
$this->runFunction();
}
}
public function getContent( $template )
{
$this->content = file_get_contents( $template );
}
public function searchForTags()
{
$start = strpos( $this->content, '<%')+strlen('<%');
$end = strpos( $this->content, '%>');
$part = $end - $start;
if ( $part > 0)
$this->function = substr($this->content, $start, $part);
}
public function runFunction()
{
if ( $this->function )
{
var_dump( $this->model->{$this->function} );
}
}
}
This class load my template regarding classname. In the template if i have function example:
<td class="right error"> <% getLoginValidatorMsg() %></td>
i want to run it and replace into the value before it shows in my template. Somehow i cant run above function. Error:
Notice: Undefined property: LoginForm::$ getLoginValidatorMsg() in /media/htdocs/ver1/loginmanager/init/View.php on line 54
If i try to run:
$this->model->getLoginValidatorMsg();
will return me the value what i looking for.