Có cách nào để kiểm soát hành vi json_encode
trên các đối tượng không? Giống như loại trừ các mảng trống, các trường rỗng và cứ như vậy?Làm cách nào để kiểm soát hành vi json_encode?
Ý tôi là một cái gì đó giống như khi sử dụng serialize()
, nơi bạn có thể thực hiện phép thuật __sleep()
phương pháp và chỉ định những gì thuộc tính nên được tuần tự:
class MyClass
{
public $yes = "I should be encoded/serialized!";
public $empty = array(); // // Do not encode me!
public $null = null; // Do not encode me!
public function __sleep() { return array('yes'); }
}
$obj = new MyClass();
var_dump(json_encode($obj));
Vâng, tôi biết rằng nhưng nhờ cho câu trả lời. Vấn đề là khi B mở rộng A, B không thể sửa đổi '$ privateVars' và làm cho nó 'riêng tư'. – gremo
Làm cho công việc được bảo vệ? Tại sao B làm cho privateVars tư nhân, nó đã được tư nhân. – Jarvix