Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在类方法内创建并调用函数_Php_Anonymous Function - Fatal编程技术网

Php 在类方法内创建并调用函数

Php 在类方法内创建并调用函数,php,anonymous-function,Php,Anonymous Function,我试图调用函数内部的函数,但没有调用它,也没有出现错误 我创建了一个$addFile函数,以便在下面的switch语句中重用它 public function findFilesBySize($path, $size) { if((!is_array($size)) || (count($size) != 2)) throw new \Exception("Second parameter should be array of comparison operator an

我试图调用函数内部的函数,但没有调用它,也没有出现错误

我创建了一个
$addFile
函数,以便在下面的switch语句中重用它

public function findFilesBySize($path, $size)
{
    if((!is_array($size)) || (count($size) != 2))
        throw new \Exception("Second parameter should be array of comparison operator and value", 1);


    $path = (is_dir($path)) ? $path : getcwd();
    $files = array();
    $addFiles = function(array $files, \DirectoryIterator $file ) 
                {
                    die('working'); // function not getting called
                    $files[] = $file->getFileName();
                };
    $iterator = new \DirectoryIterator($path);
    foreach ($iterator as $file) {
        if($file->isDir())
            continue;
        switch ($size[0]) {
            case '<':
                if($file->getSize() < $size[1]) {
                    $addFiles($files, $file);
                }
                break;   
            case '>':
                if($file->getSize() > $size[1]) {
                    $addFiles($files, $file);
                }
                break;

            default:
                # code...
                break;
        }
    }
    return $files;
}
公共函数findFilesBySize($path,$size)
{
如果((!is_数组($size))| |(计数($size)!=2))
抛出new\Exception(“第二个参数应该是比较运算符和值的数组”,1);
$path=(is_dir($path))?$path:getcwd();
$files=array();
$addFiles=函数(数组$files、\DirectoryIterator$file)
{
die('working');//函数未被调用
$files[]=$file->getFileName();
};
$iterator=new\directoryinterator($path);
foreach($iterator作为$file){
如果($file->isDir())
持续
交换机($size[0]){
案例“”:
如果($file->getSize()>$size[1]){
$addFiles($files,$file);
}
打破
违约:
#代码。。。
打破
}
}
返回$files;
}
附加/可选部分:
我不喜欢切换方法,如果有人能建议任何好的方法来执行
if($file->getSize()$operator$value)
,那么请告诉我。

函数对我有效(可能是php<5.3?),但是
$files
数组只能在该函数范围内运行(一次调用)-通过引用传递它:
$addFiles=function(array&$files,
。我首先想到的方法是一些文件列表类扩展DirectoryIterator,其中包含两个方法:
getsmall($size)
getbiger($size)
或类似的东西。是的,我通过引用传递了它,工作正常,但函数没有通过这种方式被调用。我安装了
addFiles()
。我甚至尝试了
call\u user\u func
。无论如何,你可以发布答案,这样我就可以结束这个问题了。