2016-05-06 185 views
0

所以我有一個類,我添加了不同的方法來定製我的Wordpress主題。其中一種方法稱爲limitExcerptToWords,它的作用是限制WP返回的摘錄的長度。PHP中的變量範圍問題

你在WP中這樣做的方式是通過向鉤子添加一個函數,該函數可以表示爲一個字符串(函數的名稱),或者像我的情況那樣,作爲匿名函數。該函數返回的值將是摘錄的長度。

我的代碼如下所示:

class XX { 
    /* ... */ 
    function limitExcerptToWords($numWords) { 
     add_filter('excerpt_length', function(){ 
      return $numwords; 
     }); 
    } 
    /* ... */ 
} 

然後我想invoque該方法,如:$OBJ->limitExcerptToWords(10);

我在JS,更見地,其中該代碼將工作僅僅指剛罰款,但PHP有一種處理範圍的不同方式,結果我的匿名函數中的代碼沒有作用域$numWords

我一直在閱讀PHP文檔,但我無法找到一種以優雅的方式工作的方式。

你能幫忙嗎? :3

謝謝!

+0

的[PHP lambda函數和範圍(可能的複製http://stackoverflow.com/questions/5408535/傳遞php-lambda-functions-and-scope) –

回答

2

如果你想使用它的ANOM函數中,你需要用use

class XX { 
    /* ... */ 
    function limitExcerptToWords($numWords) { 
     add_filter('excerpt_length', function() use($numWords) { 
      return $numwords; 
     }); 
    } 
    /* ... */ 
} 
+0

好像通過魔術!不知何故,當我第一次閱讀匿名功能手冊時,我錯過了這一點,現在就發現它! (php.net/manual/en/functions.anonymous.php#example-197) 非常感謝老闆! –