Я использую функцию для создания zip-файлов в PHP. Затем я вызываю эту функцию внутри другой функции.Звонок на неопределенную функцию?
Я не могу понять, почему я получаю следующее сообщение об ошибке:
Fatal error: Call to undefined function create_zip() in ...
функция является всеми государственной, так и внутри класса, так что я не могу понять это.
Вот документ, я удалил содержание всех других функций для простоты:
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class Judging {
public $return_data;
public function __construct()
{
$this->EE =& get_instance();
}
public function pre_judging_items() {
}
public function pre_judging_submission_accept() {
}
public function pre_judging_submission_decline() {
}
public function round_one_items() {
}
public function round_one_submission_decline() {
}
public function round_two_items() {
}
public function submission_form() {
}
public function counts() {
}
public function judged_list_singles() {
}
public function create_zip($files = array(),$destination = '',$overwrite = false) {
if(file_exists($destination) && !$overwrite) { return false; }
$valid_files = array();
if(is_array($files)) {
foreach($files as $file) {
if(file_exists($file)) {
$valid_files[] = $file;
}
}
}
if(count($valid_files)) {
$zip = new ZipArchive();
if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
return false;
}
foreach($valid_files as $file) {
$zip->addFile($file,$file);
}
$zip->close();
return file_exists($destination);
}
else
{
return false;
}
}
public function judged_zip_singles() {
$sql = "
SELECT *
FROM (
SELECT *, @rn:=IF(@prevCat=category_id, @rn + 1,1) rn, @prevCat:=category_id
FROM (
SELECT sub.entry_id, sum(jud.stage_2) AS score, sub.member_group, sub.category_id, dat.field_id_48 as path
FROM exp_judging AS jud
JOIN (SELECT @rn:=0, @prevCat:=0) T
LEFT JOIN exp_submissions AS sub ON jud.rel_id = sub.id
LEFT JOIN exp_channel_data AS dat ON dat.entry_id = sub.entry_id
GROUP BY jud.rel_id
ORDER BY sub.category_id, sum(jud.stage_2) DESC
) T
) T
WHERE rn <= 35
";
$query = $this->EE->db->query($sql);
$items = array();
foreach ($query->result_array() as $key => $row) {
$path = substr($row['path'], 11);
$items[] = $path;
}
$result = create_zip($items,'single-files.zip');
print_r($result);
}
}
Может кто-нибудь понять, почему я буду получать эту ошибку?
Вы называете его как функцию или метод объекта суждения ? Большая разница между ними. –
Потому что это метод, и вы вызываете его как глобальную функцию - без '->' ссылаясь на текущий объект. – mario
Поскольку create_zip - это метод в том же классе, вам придется вызывать его с $ this, а в своей области $ this-> create_zip() –