PHP和策略模式。试图在构造函数中设置属性时未定义变量
我是PHP新手,但来自Java背景,我正在尝试用OO-PHP实现一个简单的策略模式 我在变量范围和将对象分配给类属性方面遇到问题。当试图从度量构造函数访问时,我得到一个错误,即属性$strategy未定义。有人能帮忙吗 谢谢, 约翰 策略模式代码: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
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等等!