找不到cakephp数组\过滤器回调函数

找不到cakephp数组\过滤器回调函数,php,cakephp,cakephp-1.3,Php,Cakephp,Cakephp 1.3,我有一个cakephp应用程序,在我的一个控制器中,我有一个函数\u filter\u callback,用作对php函数的回调,如下所示: class TestClassController extends AppController { var $name = 'TestClass'; .... function test_fn() { ... array_filter($my_array, '_filter_c

我有一个cakephp应用程序,在我的一个控制器中,我有一个函数
\u filter\u callback
,用作对php函数的回调,如下所示:

class TestClassController extends AppController
{
     var $name = 'TestClass';

     ....

     function test_fn()
     {
         ...
         array_filter($my_array, '_filter_callback');
     }

     function _filter_callback($val)
     {
          // callback logic here...
     }
}
我的问题是,我的控制器中的
array\u filter
找不到我的函数
\u filter\u callback
,因为我遇到以下错误:

Warning: array_filter() expects parameter 2 to be a valid callback, 
function '_filter_callback' not found or invalid function name

有人知道我如何在cakephp应用程序中使
array\u filter
知道我的回调函数吗?

该函数是否在全局范围内?如果不是,那就是。 如果函数体很简单(在大多数情况下),请尝试使用PHP>5.3的匿名函数-

或者使用create_函数

然后可以将其作为参数注入,而无需声明一个use全局函数

过滤小于10的所有元素的示例:

array_filter($array, create_function('$a', 'return $a > 10;'));
编辑: 我现在可以看到您正在尝试调用对象的方法。必须指定实例。试试这个:

array_filter($my_array, array($this, '_filter_callback'));

该功能是否在全局范围内?如果不是,那就是。 如果函数体很简单(在大多数情况下),请尝试使用PHP>5.3的匿名函数-

或者使用create_函数

然后可以将其作为参数注入,而无需声明一个use全局函数

过滤小于10的所有元素的示例:

array_filter($array, create_function('$a', 'return $a > 10;'));
编辑: 我现在可以看到您正在尝试调用对象的方法。必须指定实例。试试这个:

array_filter($my_array, array($this, '_filter_callback'));

有效的PHP回调定义是:

  • 包含全局函数名的字符串:
    'functionName'
  • 包含要用作第一个元素的对象实例的数组,以及包含要在此对象内调用的方法名称的字符串作为第二个元素:
    array($object,'method')
  • 带有静态方法调用的字符串:
    'StaticClass::methodName'
  • 将类名作为字符串作为第一个元素,将静态函数名作为第二个元素的数组:
    array('StaticClass','methodName')
  • lambda函数,内联:
    function(){/*do stuff*/}
  • 变量中的lambda函数:
    $lambda
  • is\u callable()
    可用于检查是否可以调用参数


    请注意,使用回调取决于可见性。通常不能使用私有或受保护的方法作为PHP函数的参数。它们从全局角度进行操作,无法从外部访问这些方法。

    有效的PHP回调定义是:

  • 包含全局函数名的字符串:
    'functionName'
  • 包含要用作第一个元素的对象实例的数组,以及包含要在此对象内调用的方法名称的字符串作为第二个元素:
    array($object,'method')
  • 带有静态方法调用的字符串:
    'StaticClass::methodName'
  • 将类名作为字符串作为第一个元素,将静态函数名作为第二个元素的数组:
    array('StaticClass','methodName')
  • lambda函数,内联:
    function(){/*do stuff*/}
  • 变量中的lambda函数:
    $lambda
  • is\u callable()
    可用于检查是否可以调用参数


    请注意,使用回调取决于可见性。通常不能使用私有或受保护的方法作为PHP函数的参数。它们从全局角度进行操作,无法从外部访问这些方法。

    您能给我们一个代码示例吗?它是否在同一范围内?是的,所有内容都在同一类中(查看编辑)。不在同一类中。在同一个范围内。你能给我们一个你的代码的例子吗?它在同一个范围内吗?是的,所有东西都在同一个类中(查看编辑)。不在同一个类中。在相同的scope.Wow中,
    array\u filter($my\u array,array($this,'u filter\u callback')工作!!,非常感谢你。我不知道语法
    数组($this'a_function'
    );。你能给我一个链接或者一些解释语法的东西吗?参见示例#4Wow,
    array_filter($my_array,array($this,'u filter_callback')工作!!,非常感谢你。我不知道语法
    数组($this'a_function'
    );。你能给我一个链接或者一些解释语法的东西吗?见示例4