2012-03-21 54 views
1

我是PHP新手,但來自Java背景,我試圖在OO-PHP中實現一個簡單的策略模式。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); 
} 

回答

0

這是一個語法問題,試試這個:在PHP

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

屬性有當他們被定義但未使用它們當美元。

+0

謝謝! - 立即解決問題。它一直在我的臉上盯着我很久。 – cfmjohn 2012-03-21 15:43:26

+0

@cfmjohn無後顧之憂。歡迎來到PHP和SO! – liquorvicar 2012-03-21 16:01:48

0

省略美元符號。

$this->strategy 
相關問題