2014-02-13 4 views
0

Мне нужно расширить класс Image с помощью iMagick модуля с тем же именем (https://github.com/kohana/image), но я не могу этого сделать.Расширяет класс изображения в Kohana 3.3

Я хочу добавить новый метод «кеш». Это то, что я пытаюсь сделать:

классы/image.php

abstract class Image extends Kohana_Image {} 

классы/Кохана/image.php

abstract class Kohana_Image { 

    public function cache() 
    { 
     $this->_do_cache(); 
    } 

    abstract protected function _do_cache(); 
} 

классы/Кохана/Image/Imagick

class Kohana_Image_Imagick extends Image { 

    protected function _do_cache() 
    { 
     // do something here 
    } 

} 

Вот как я называю метод:

Image::factory(DOCROOT.'/media/img/myimage.jpg')->cache(); 

Это ошибка:

ErrorException [ Fatal Error ]: Call to undefined method Image_Imagick::cache() 

Просто, чтобы вы знаете, Imagick правильно установлен и работает отлично с использованием нативного класса Image.

Надеюсь, что вы, ребята, поможете мне в этом, спасибо.

ответ

0

Have you read the documentation?

Вы должны:

Set Image::$default_driver = 'Imagick';

Или называть его factory указания водителю использовать:

Image::factory(DOCROOT.'/media/img/myimage.jpg', 'Imagick')->cache(); 

Если не указать драйвер использование Kohana возвращается к тому, что установлено в Image::$default_driver

OLD ОТВЕТ

Вы не имеете необходимого класса

// APPPATH./classes/Image/Imagick.php 

class Image_Imagick extends Kohana_Image_Imagick {} // empty class 

Тогда вы должны быть в состоянии назвать Image_Imagick::cache

Если вы хотите, чтобы метод был доступен из Image

// APPPATH./classes/Image.php 

class Image extends Kohana_Image_Imagick {} // empty class 

Теперь вы можете позвонить в Image::cache

+0

Здравствуйте, спасибо, что ответили. да, я прочитал документацию. да, я установил Image :: $ default_driver для «imagick». Я создал необходимые классы и не работает. –

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