2013-09-18 3 views
0

У меня есть загрузка файла blueimp, хорошо работающая с codeigniter. Я использую библиотеку UploadHandler как есть. Но я хочу расширить его, чтобы заменить две функции, которые создают уникальное имя файла. Код для этого в вики BlueImp Github.Codeigniter расширить Blueimp Загрузите библиотеку

Я создал расширенную библиотеку таким образом:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class MY_UploadHandler extends UploadHandler { 

public function __construct() { 
    parent::__construct(); 
    $CI =& get_instance(); 
    $CI->load->library('UploadHandler'); 
} 

protected function upcount_name_callback($matches) { 
    $index = isset($matches[1]) ? intval($matches[1]) + 1 : 1; 
    $ext = isset($matches[2]) ? $matches[2] : ''; 
    return '-'.$index.''.$ext; 
} 

protected function upcount_name($name) { 
    return preg_replace_callback(
    '/(?:(?:-([\d]+))?(\.[^.]+))?$/', 
    array($this, 'upcount_name_callback'), 
    $name, 
    1 
    ); 
} 

} 

Когда я пытаюсь запустить его, я получаю сообщение «Не удается загрузить UploadHandler» ошибку. Если я удалю свое расширение MY, выполняется исходный код. Что не так с моим добавочным кодом? Разве это не лучший способ расширить библиотеки CI?

И, да, имя файла для моего файла MY_UploadHandler.php

Спасибо!

ответ

1

Я лапнул над этим некоторое время и, наконец, понял это. Чтобы расширить пользовательскую библиотеку, вам необходимо «потребовать один раз» файл, который он расширяет, до определения класса.

EX:

require_once("UploadHandler.php"); 

class MY_UploadHandler extends UploadHandler 
{ 
} 

Надеется, что помогает.

+1

Я обнаружил, что проблема в моем родительском классе. Это никогда не создавалось должным образом. Благодаря! –

Смежные вопросы