2012-03-21 7 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

+0

@cfmjohn心配はいりません。 PHPとSOへようこそ! – liquorvicar

0

を実装は、ドル記号を省略します。

$this->strategy 
関連する問題