PHP古怪扩展IMagick类

时间:2010-11-05 03:46:27

标签: php imagemagick

这真的很奇怪。我有一些代码,很高兴在php5-imagick模块的2.1.1RC1版本上工作。它基本上只是我编写的一个类,它扩展了 Imagick 类并管理存储在数据库中的图像。

自升级到版本3.0.0RC1(谢天谢地,仅在我的开发盒上),事情已经变得很糟糕。似乎对象成员是可写的但不可读。请参考以下示例代码:

class db_image extends IMagick {

private $data;

function __construct( $id = null ){
    parent::__construct();

    $this->data = 'some plain text';

    echo $this->data;
}

这将绝对输出NOTHING。我的调试器指示 $ this-> data 的内容是正确的字符串值,但我无法从成员变量中读取该值。

严重。 WTF?有谁知道是什么导致了这个或之前见过它?我甚至不知道如何在我自己的类中复制这种行为。

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题并提交了错误报告:http://pecl.php.net/bugs/bug.php?id=21229

现在似乎已经在svn修复了 - 但还没有尝试过。这些类型的错误似乎也不那么奇特:http://pecl.php.net/bugs/bug.php?id=15960&edit=2

答案 1 :(得分:1)

正如lifeofguenter指出的那样,它确实似乎是想象库中的一个错误。我用imagick-3.0.1和imagick-3.0.0遇到了这个问题 - 我已经通过降级到imagick-2.3.0解决了我自己的问题:

# pecl uninstall imagick
# pecl install imagick-2.3.0

答案 2 :(得分:0)

好吧,我不知道IMagick类,但可能它确实退出或死亡或者它的构造函数,所以只需测试以下是否有效:

class db_image extends IMagick
{
    private $data;

    function __construct( $id = null )
    {
        $this->data = 'some plain text';
        echo $this->data;

        parent::__construct();
    }
}

new db_image;