PHP怪异现象:扩展IMagick类

5
这个问题非常奇怪。 我有一些代码在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;
}

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

说真的,这是怎么回事?有人知道是什么原因或者以前见过吗?我甚至不知道如何在自己的类中复制这种行为。


3
纯属猜测,但也许新的 IMagick 类有它自己的 private $data 成员变量,这可能会阻止你覆盖它。其他变量名是否能够按预期工作呢? - deceze
很不幸,成员变量的名称并不重要。把它命名为 $sdfhjsdfhlsdf,结果也是一样的。不过还是谢谢你。 - Jamie Carl
3个回答

1

正如lifeofguenter所指出的那样,这似乎确实是imagick库中的一个bug。我在使用imagick-3.0.1和imagick-3.0.0时遇到了这个问题 - 我通过降级到imagick-2.3.0来解决了自己的问题:

# pecl uninstall imagick
# pecl install imagick-2.3.0

1

0

嗯,我不知道IMagick类,但它的构造函数可能会有exit或die或其他操作,因此只需测试以下内容是否有效:

class db_image extends IMagick
{
    private $data;

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

        parent::__construct();
    }
}

new db_image;

很好的想法。但不幸的是它仍然做着同样的事情。谢谢你的建议。 - Jamie Carl
那么,这听起来像是一个非常罕见的问题.. ^^ - Andreas Linden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接