在Kohana 3.3中扩展Image类

时间:2014-02-13 16:54:24

标签: php image module kohana

我需要使用具有相同名称(https://github.com/kohana/image)的模块的iMagick扩展类Image,但是,我无法做到。

我想添加一个新方法调用“缓存”。这就是我想要做的事情:

类/ Image.php

abstract class Image extends Kohana_Image {}

类/ Kohana的/ Image.php

abstract class Kohana_Image {

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

    abstract protected function _do_cache();
}

类/ Kohana的/图像/ 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类正常工作。

希望你们帮助我,谢谢。

1 个答案:

答案 0 :(得分:0)

Have you read the documentation?

您必须:

设置Image::$default_driver = 'Imagick';

或者将其命名为factory,指定要使用的驱动程序:

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

如果您没有指定要使用的驱动程序Kohana会回退到Image::$default_driver

中设置的任何内容

OLD ANSWER

您没有所需的课程

// 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