PHP странность расширения класса IMagick - PullRequest
5 голосов
/ 05 ноября 2010

Это действительно странно.У меня есть код, который успешно работает над версией 2.1.1RC1 модуля php5-imagick.В основном это просто класс, который я написал, который расширяет класс Imagick и управляет изображениями, хранящимися в базе данных.

После обновления до версии 3.0.0RC1 (к счастью, только на моем устройстве dev) все прошлов ад.Кажется, что члены объекта доступны для записи, но НЕ для чтения.Возьмите следующий пример кода:

class db_image extends IMagick {

private $data;

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

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

    echo $this->data;
}

Это ничего не даст.Мой отладчик показывает, что содержимое $ this-> data является правильным строковым значением, но я не могу прочитать значение обратно из переменной-члена.

Серьезно.WTF?Кто-нибудь знает, что вызывает это, или видел это раньше?Я даже не знаю, как повторить это поведение в моих собственных классах.

Ответы [ 3 ]

1 голос
/ 09 января 2011

Я столкнулся с той же проблемой и подал отчет об ошибке: http://pecl.php.net/bugs/bug.php?id=21229

похоже, что это исправлено в SVN - но еще не пробовал. Также эти типы ошибок не кажутся такими уж экзотическими: http://pecl.php.net/bugs/bug.php?id=15960&edit=2

1 голос
/ 10 февраля 2011

Это действительно похоже на ошибку в библиотеке imagick, как указывал lifeofguenter. Я столкнулся с этой проблемой с imagick-3.0.1, а также с imagick-3.0.0 - я решил эту проблему для себя, опустив версию до imagick-2.3.0:

# pecl uninstall imagick
# pecl install imagick-2.3.0
0 голосов
/ 05 ноября 2010

ну, я не знаю класс 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...