PHP и шаблон стратегии.Неопределенная переменная при попытке установить свойство в конструкторе - PullRequest
1 голос
/ 21 марта 2012

Я новичок в PHP, но пришел из Java-фона и пытаюсь реализовать простой шаблон стратегии в OO-PHP.

У меня проблема с областью действия переменной и назначением объектав собственность класса.Я получаю сообщение о том, что свойство $ стратегии не определено при попытке доступа из конструктора метрик.Может ли кто-нибудь помочь?

Спасибо, Джон

Код шаблона стратегии:

interface iMetric{

    public function calculateReadability($text);

}

/*Context - strategy pattern.*/
class metric{

    private $strategy;

    function __construct($metric){
        $this->$strategy = $metric;
    }

    function calculateReadability($text){

        return $this->$strategy->calculateReadability($text);
    }
}

Откуда это создается / вызывается: класс fleschEase реализует iMetric {

    function calculateReadability($text){
        require_once('textstats/TextStatistics.php');
        $statistics = new TextStatistics();
        return $statistics->flesch_kincaid_reading_ease($text);
    }
}

require_once('metrics.php');

// Flesch Reading Ease
if(strlen($fleschReadingEase)==0){
    $metric = new metric(new fleschEase());
    $fleschReadingEase = $metric->calculateReadability($content);
}

Ответы [ 2 ]

0 голосов
/ 21 марта 2012

Это проблема синтаксиса, попробуйте следующее:

function __construct($metric){
    $this->strategy = $metric;
}

Свойства в PHP имеют доллар, когда они определены, но не когда они используются.

0 голосов
/ 21 марта 2012

Опустить знак доллара.

$this->strategy
...