Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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 - Fatal编程技术网

在php中从私有函数中调用函数

在php中从私有函数中调用函数,php,Php,我正在使用jQuery文件管理器。在class.uploader.php页面中有一个私有函数: private function prepareFiles(){ $user_id = $_SESSION['user_id']; function generateRandomString($length = 10) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

我正在使用jQuery文件管理器。在class.uploader.php页面中有一个私有函数:

private function prepareFiles(){

$user_id = $_SESSION['user_id'];

function generateRandomString($length = 10) {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $charactersLength = strlen($characters);
        $randomString = '';
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, $charactersLength - 1)];
        }
        return $randomString;
    }

    $field = $this->field;
    $validate = $this->validate();

    if($validate){
        $files = array();
        $removed_files = $this->removeFiles();

        for($i = 0; $i < count($field['name']); $i++){

            $metas = array();

            if($field['Field_Type'] == 'input'){
                $tmp_name = $field['tmp_name'][$i];
            }elseif($field['Field_Type'] == 'link'){
                $link = $this->downloadFile($field['name'][0], false, true);

                $tmp_name = $field['name'][0];
                $field['name'][0] = pathinfo($field['name'][0], PATHINFO_BASENAME);
                $field['type'][0] = $link['type'];
                $field['size'][0] = $link['size'];
                $field['error'][0] = 0;
            }



            $metas['extension'] = substr(strrchr(strtolower($field['name'][$i]), "."),1);
            $metas['type'] = preg_split('[/]', $field['type'][$i]);
            $metas['extension'] = $field['Field_Type'] == 'link' && empty($metas['extension']) ? $metas['type'][1] : $metas['extension'];
            $metas['old_name'] = substr($field['name'][$i], 0, -(strlen(strrchr($field['name'][$i], $metas['extension']))+1));
            $metas['size'] = $field['size'][$i];
            $metas['size2'] = $this->formatSize($metas['size']);
            $metas['name'] = $this->generateFileName($this->options['title'], array('name'=>$metas['old_name'], 'size'=>$metas['size'])) . (!empty($metas['extension']) ? "." . $metas['extension'] : "");
            $metas['file'] = $this->options['uploadDir'] . $user_id . "_" . $metas['name'];
            $metas['replaced'] = file_exists($metas['file']);
            $metas['date'] = date('r');

            if(!in_array($field['name'][$i], $removed_files) && $this->validate(array_merge($metas, array('index'=>$i, 'tmp'=>$tmp_name))) && $this->uploadFile($tmp_name, $metas['file'])){
                if($this->options['perms']) @chmod($metas['file'], $this->options['perms']);

                $custom = $this->_onUpload($metas, $this->field); if($custom && is_array($custom)) $metas = array_merge($custom, $metas);

                ksort($metas);

                $files[] = $metas['file'];
                $this->data['data']['metas'][] = $metas;   
            }
        }

        $this->data['isSuccess'] = count($field['name']) - count($removed_files) == count($files);
        $this->data['data']['files'] = $files;

        if($this->data['isSuccess']) $custom = $this->_onSuccess($this->data['data']['files'], $this->data['data']['metas']);

        $this->data['isComplete'] = true;
        $custom = $this->_onComplete($this->data['data']['files'], $this->data['data']['metas']);
    }

    return $this->data;
}
并修改此行以将其包括在内:

 $metas['file'] = $this->options['uploadDir'] . $user_id . "_" . $metas['name'];
        $metas['replaced'] = file_exists($metas['file']);
我还想在user_id之后但在文件名之前添加这个

 function generateRandomString($length = 10) {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $charactersLength = strlen($characters);
        $randomString = '';
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, $charactersLength - 1)];
        }
        return $randomString;
    }

但是它没有“看到”$randomString

我忘了调用函数,尽管Chay22的响应也会起作用。

我忘了调用函数,尽管Chay22的响应也会起作用。

不清楚为什么必须在函数中定义函数。或者为什么不能使用匿名函数。您似乎从未调用过
generateRandomString()
。。。你希望它能做什么?我也不确定我是否需要一个,只是需要最好的方法在文件名中添加一些随机字符,以确保没有重复的文件上传。我曾在另一个文件上传程序中使用过这个,但那个有点笨重,干扰了我表单的自然提交(它希望立即上传文件)。我将听取如何更好地实现这一点的建议。Cfreak,谢谢。我是个白痴。用
generateRandomString(10)
替换
$randomString
。不清楚为什么必须在函数中定义函数。或者为什么不能使用匿名函数。您似乎从未调用过
generateRandomString()
。。。你希望它能做什么?我也不确定我是否需要一个,只是需要最好的方法在文件名中添加一些随机字符,以确保没有重复的文件上传。我曾在另一个文件上传程序中使用过这个,但那个有点笨重,干扰了我表单的自然提交(它希望立即上传文件)。我将听取如何更好地实现这一点的建议。Cfreak,谢谢。我是个白痴。用
generateRandomString(10)
替换
$randomString
 function generateRandomString($length = 10) {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $charactersLength = strlen($characters);
        $randomString = '';
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, $charactersLength - 1)];
        }
        return $randomString;
    }
 $metas['file'] = $this->options['uploadDir'] . $user_id . "_" . $randomString . "_" . $metas['name'];
        $metas['replaced'] = file_exists($metas['file']);