2017-12-20 16 views
0

以下の例ではtestPropertyにアクセスしますが、これはネストされた関数内にあります(ネストされたものでなければなりません)が、 "オブジェクトコンテキスト"ネストされた関数のプロパティアクセシビリティ

私は、単に既存のものの中に別の「公開機能」を開くことはできません。誰もがこれを修正する方法を知っていますか?

グローバル変数を使用せずに、クラス全体でグローバル変数が必要です。

class test 
{ 
    private testProperty; 

    public function testFunction() { 
     function abc() { 
      var_dump($this->testProperty) 
     } 
    } 
} 
+0

、あなたのコードを修正してください。 'abc'関数は、' testFunction'の中で*定義された、*返された? – Smuuf

+0

は、あなたがTwigで達成しようとしていることを含む完全な例を提供します。 – Ali

答えて

0

私がそれが述べたかったのとまったく同じ問題を解決しなかったが、私はそれを私の文書で修正した。私は私の機能を外部に置き、それを一般公開しました。私のabc()を$ this-> abc()に変更しました。

+0

これが正しい回答/解決策だと思われる場合は、これを回答済みとすることをお勧めします。 – Smuuf

+0

これを行うにはさらに6時間待たなければなりません – olvenmage

0

あなたが達成しようとしているものが正しいとすれば、

class test 
{ 
    private $testProperty = "whatever"; 

    public function testFunction() { 

     $abc = function() { 
      var_dump($this->testProperty); 
     }; 

     $abc(); 

    } 

} 

$x = new test; 
$x->testFunction(); 

$abcは今匿名関数であるので、クラスメソッドの内部で使用された場合、それが利用可能$this変数があります。このような何かをしたいです。

意志出力上記のコード:意図が明確であるので

string(8) "whatever"

関連する問題