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
。无论如何,你可以发布答案,这样我就可以结束这个问题了。