Усы (php) и предметы? - PullRequest
       9

Усы (php) и предметы?

1 голос
/ 15 сентября 2011

Учитывая следующий пример, может ли кто-нибудь порекомендовать лучший метод для доступа к $ string или HelloWorld :: getString () из шаблона без расширения класса усов?

<?php    
Class HelloWorld{
    protected $string;
    function __construct(){
        $this->string = 'Hello World';
    }
    function setString($str) { $this->string = $str; }
    function getString() { return $this->string; }
}

# here goes nothing
$h = new HelloWorld();
$m = new Mustache();
echo $m->render('{{string}}', $h);
?>

Как вы могли бы представить, если бы ясделать $ string общедоступной, она работает как положено.Что мне не хватает?

Ответы [ 2 ]

3 голосов
/ 17 сентября 2011

Это смущает.Решение просто:

{{getString}}
1 голос
/ 15 сентября 2011

Возможно, вы захотите взглянуть на PHP magic __get и __set методы.

Попробуйте это так:

Class HelloWorld{
    protected $string;
    function __construct(){
        $this->string = 'Hello World';
    }
    function __set($var, $value) { 
        switch($var){
            case 'string': $this->string = $value; break;
            default: // do nothing //
        }
    }
    function __get($var) { 
        switch($var){
            case 'string': return $this->string;
            default: // do nothing //
        }
    }
}
...