匿名関数では語彙スコープは使用されませんが、$this
is a special case and will automatically be available inside the function as of 5.4.0です。あなたのコードは期待どおりに機能するはずですが、古いPHPバージョンに移植することはできません。
以下はないは動作します:あなたはクロージャのスコープに変数を挿入したい場合は
protected function _pre() {
$methodScopeVariable = 'whatever';
$this->require = new Access_Factory(function($url) {
echo $methodScopeVariable;
});
}
代わりに、あなたはuse
キーワードを使用することができます。次は作業します:5.3.xでは
protected function _pre() {
$methodScopeVariable = 'whatever';
$this->require = new Access_Factory(function($url) use ($methodScopeVariable) {
echo $methodScopeVariable;
});
}
、あなたは次の回避策で$this
へのアクセスを得ることができます。
protected function _pre() {
$controller = $this;
$this->require = new Access_Factory(function($url) use ($controller) {
$controller->redirect($url);
});
}
は詳細についてthis question and its answersを参照してください。要するに
ああを、指摘したように:編集
をPHP5.4で(私のDebian Stableパッケージにはまだ達していませんが...手動でインストールする必要があります)。 – Wrikken
"use($ this)"が必要ですか、または5.4が自動的に$ thisにアクセスできますか? – Charles
5.4.0+は '$ this'を自動的にバインドします。それを説明する[この短いビデオ](http://youtu.be/-Ph7X6Y6n6g)をチェックしてください。 –