2016-05-06 83 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) 非常感谢老板! –