2010-11-05 2 views
5

Это действительно странно. У меня есть код, который с удовольствием работает над версией 2.1.1RC1 модуля php5-imagick. В основном это класс, который я написал, который расширяет класс Imagick и управляет изображениями, хранящимися в базе данных.Расширение PHP странности Класс 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

чистой спекуляции, но, возможно, новый 'Imagick 'class имеет свой собственный' private $ data' член, который мешает вам переопределить его. Другие имена переменных работают так, как ожидалось? – deceze

+0

Можете ли вы показать полный код? –

+0

К сожалению, не имеет значения, что такое имя переменной-члена. Назовите его $ sdfhjsdfhlsdf, и он будет иметь тот же результат. Спасибо хоть. –

ответ

0

ну, я не знаю, класс Imagick, но Propably он делает ан выходе или умереть или что-то в его конструктор, так просто проверить, если выполняются следующие работы:

class db_image extends IMagick 
{ 
    private $data; 

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

     parent::__construct(); 
    } 
} 

new db_image; 
+0

Отличная идея. Но, к сожалению, он все равно делает то же самое. Спасибо хоть. –

+0

ну, тогда это звучит как очень необычная проблема .. ^^ –

1

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

# pecl uninstall imagick 
# pecl install imagick-2.3.0