Здравствуйте! Пробовал такой код: Код (Text): if (!class_exists('VmImage')) require(VMPATH_ADMIN.DS.'helpers'.DS.'image.php'); class Vm3delpicsModelFSDelete extends JModelList { public $vm_media = new VmImage(); ... выдает ошибку Пробовал такой: Код (Text): if (!class_exists('VmImage')) require(VMPATH_ADMIN.DS.'helpers'.DS.'image.php'); class Vm3delpicsModelFSDelete extends JModelList { public $vm_media; public function get_product_path($file){ $this->vm_media = new VmImage(); ... тоже выдает ошибку. Как выйти из ситуации и создать свойство класса, в котором будет храниться объект, который далее будет использоваться методами класса?
Спасибо. Поясните, пожалуйста, куда в рамках выше показанного кода я должен поместить Код (Text): spl_autoload_register(function ($class) { include VMPATH_ADMIN.DS.'helpers'.DS.'image.php'; }); До определения класса Vm3delpicsModelFSDelete ?
Какую ошибку выдаёт второй код? Первый - по определению неправильный, инициализировать при объявлении свойства класса можно только константами.
Спасибо. Не знаю почему, но сейчас второй вариант работает, хотя вроде бы такой, какой был: Спойлер PHP: <?php defined("_JEXEC") or die(); if(!defined('DS')) define('DS', DIRECTORY_SEPARATOR); if (!class_exists( 'VmConfig' )) require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'config.php'); if (!class_exists('VmImage')) require(VMPATH_ADMIN.DS.'helpers'.DS.'image.php'); class Vm3delpicsModelFSDelete extends JModelList { public $product_files = array(); public $resized_files = array(); public $vm_media; //функция получения массива с именами файлов из заданной папки public function select_files($folder){ $fp=opendir($folder); $internal_array = array(); while (false !== ($file = readdir($fp))) { if(is_file($folder."/".$file)) { $internal_array[] = $file; } } closedir($fp); return $internal_array; } //функция получения названия детального изображения по имени превью public function get_product_path($file){ $this->vm_media = new VmImage(); list($this->vm_media->file_name, $this->vm_media->file_extension) = explode(".",$file); $product_name = $this->vm_media->createThumbName(90,90); $suffix = substr($product_name, -(strlen($product_name)-strlen($this->vm_media->file_name))); return strstr($this->vm_media->file_name,$suffix,true). $this->vm_media->file_extension; } protected function getListQuery(){//то, что отображается в виде по умолчанию $union_select = ''; $this->product_files = $this->select_files(JPATH_ROOT.DS.'images/stories/virtuemart/product/'); $var = $this->select_files(JPATH_ROOT.DS.'images/stories/virtuemart/product/resized/'); $this->resized_files = array_combine($var, array_map("get_product_path",$var)); ... } } ?>
Вы в array_map пытаетесь применить функцию, а подразумеваете метод: PHP: array_map([$this, "get_product_path"],$var)