2010-11-05 48 views
5

Đây thực sự là một điều kỳ lạ. Tôi có một số mã đang vui vẻ làm việc trên phiên bản 2.1.1RC1 của mô-đun php5-imagick. Về cơ bản nó chỉ là một lớp mà tôi đã viết để mở rộng lớp Imagick và quản lý hình ảnh được lưu trữ trong cơ sở dữ liệu.Kỳ lạ PHP mở rộng lớp IMagick

Kể từ khi nâng cấp lên phiên bản 3.0.0RC1 (may mắn chỉ trên hộp dev của tôi) mọi thứ đã đi vào địa ngục. Dường như các thành viên đối tượng có thể ghi được nhưng KHÔNG thể đọc được. Hãy lấy mã mẫu sau:

class db_image extends IMagick { 

private $data; 

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

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

    echo $this->data; 
} 

Điều này sẽ xuất ra hoàn toàn NOTHING. Trình gỡ lỗi của tôi cho biết nội dung của $ this-> data là giá trị chuỗi chính xác, nhưng tôi không thể đọc giá trị trở lại của biến thành viên.

Nghiêm túc. WTF? Có ai biết điều gì đang gây ra điều này hoặc đã từng thấy trước đó không? Tôi thậm chí không biết cách sao chép hành vi này trong các lớp học của riêng tôi.

+3

Đầu cơ thuần túy, nhưng có lẽ là mới 'IMagick 'class có thành viên' private $ data' riêng của nó, ngăn cản bạn ghi đè nó. Các tên biến khác có hoạt động như mong đợi không? – deceze

+0

Bạn có thể hiển thị mã đầy đủ không? –

+0

Thật không may, nó không quan trọng tên biến thành viên là gì. Gọi nó là $ sdfhjsdfhlsdf và nó sẽ có cùng kết quả. Cảm ơn mặc dù. –

Trả lời

0

tốt, tôi không biết lớp Imagick, nhưng propably nó en thoát hoặc chết hoặc cái gì đó trong constructor của nó, vì vậy chỉ cần kiểm tra xem các công việc sau:

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

Ý tưởng tuyệt vời. Nhưng tiếc là nó vẫn làm điều tương tự. Cảm ơn mặc dù. –

+0

tốt, sau đó điều này nghe có vẻ như một vấn đề rất phổ biến ..^^ –

1

Nó thực sự có vẻ là một lỗi trong thư viện tưởng tượng như lifeofguenter đã chỉ ra. Tôi đã gặp vấn đề này với imagick-3.0.1 và cũng imagick-3.0.0 - Tôi đã giải quyết được vấn đề cho bản thân mình bằng cách hạ cấp xuống imagick-2.3.0:

# pecl uninstall imagick 
# pecl install imagick-2.3.0