2009-12-22 33 views
17

Tôi đã mã PHP5 sau:Làm cách nào để khắc phục lỗi nghiêm ngặt của PHP "Tạo đối tượng mặc định từ giá trị trống"?

$request = NULL; 
$request->{"header"}->{"sessionid"}  = $_SESSION['testSession']; 
$request->{"header"}->{"type"}    = "request"; 

Lines 2 và 3 đang sản xuất các lỗi sau:

PHP Strict standards: Creating default object from empty value

Làm thế nào tôi có thể khắc phục lỗi này?

+1

Chỉ cần tò mò, nơi mà bạn đã nhìn thấy phong cách này trước đây chưa? $ request -> {"header"} -> {"sessionid"} – MindStalker

+0

Tôi đã nhìn thấy nó trong khi đóng khung các yêu cầu JSON. – Jake

Trả lời

40

Null không phải là một đối tượng, do đó bạn không thể chỉ định giá trị cho nó. Từ những gì bạn đang làm, có vẻ như bạn cần một số associative array. Nếu bạn đang chết đặt vào việc sử dụng các đối tượng, bạn có thể sử dụng stdClass

//using arrays 
$request = array(); 
$request["header"]["sessionid"]  = $_SESSION['testSession']; 
$request["header"]["type"]    = "request"; 

//using stdClass 
$request = new stdClass(); 
$request->header = new stdClass(); 
$request->header->sessionid  = $_SESSION['testSession']; 
$request->header->type    = "request"; 

tôi sẽ khuyên bạn sử dụng các mảng, vì nó là một cú pháp gọn gàng với (có lẽ) việc thực hiện cơ bản giống nhau.

+0

Tôi không thể làm cho nó hoạt động với stdClass() .. Tuy nhiên, kiểu mảng() chỉ hoạt động tốt ... Cảm ơn bạn – Jake

1

Đừng cố đặt thuộc tính trên giá trị rỗng? Sử dụng một mảng kết hợp để thay thế.

13

Loại bỏ $ request = NULL và thay thế bằng:

$request = new stdClass; 
$request->header = new stdClass; 

Bạn đang cố gắng viết để NULL thay vì một đối tượng thực tế.

4

Để ngăn chặn các lỗi:

error_reporting(0); 

Để khắc phục lỗi:

$request = new stdClass(); 

hth

Các vấn đề liên quan