PHP和策略模式。试图在构造函数中设置属性时未定义变量

PHP和策略模式。试图在构造函数中设置属性时未定义变量,php,design-patterns,undefined,strategy-pattern,Php,Design Patterns,Undefined,Strategy Pattern,我是PHP新手,但来自Java背景,我正在尝试用OO-PHP实现一个简单的策略模式 我在变量范围和将对象分配给类属性方面遇到问题。当试图从度量构造函数访问时,我得到一个错误,即属性$strategy未定义。有人能帮忙吗 谢谢, 约翰 策略模式代码: interface iMetric{ public function calculateReadability($text); } /*Context - strategy pattern.*/ class metric{ p

我是PHP新手,但来自Java背景,我正在尝试用OO-PHP实现一个简单的策略模式

我在变量范围和将对象分配给类属性方面遇到问题。当试图从度量构造函数访问时,我得到一个错误,即属性$strategy未定义。有人能帮忙吗

谢谢, 约翰

策略模式代码:

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);
}
省略美元符号

$this->strategy

这是一个语法问题,请尝试以下操作:

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

PHP中的属性在定义时是美元,但在使用时不是美元。

谢谢!-立即解决了这个问题。它已经盯着我看了很久了。@cfmjohn不用担心。欢迎使用PHP等等!