解決PHP類私人成員 json_encode取不了值的問題
<?phpuse JMS\Serializer\Naming\IdenticalPropertyNamingStrategy;use JMS\Serializer\SerializerBuilder;use JMS\Serializer\SerializerInterface;class Ml implements JsonSerializable{ private $name; private $age; public function __construct($aParams) { foreach ($aParams as $key => $val) { if (property_exists($this, $key)) $this->$key = $val; } } /** * 產生對象執行個體 * * @param array $aParams * * @return Ml */ static public function bind(array $aParams) { $oVO = new Ml($aParams); return $oVO; } public function jsonSerialize() { $data = []; foreach ($this as $key=>$val) { if ($val !== null) $data[$key] = $val; } return $data; } public static function cc() { $data = Ml::bind([ 'name' => 'cc', 'age' => '12', 'me' => 'ken', ]); $serializer = SerializerBuilder::create() ->setPropertyNamingStrategy(new IdenticalPropertyNamingStrategy()) ->build(); // print '\n'; $sdata = $serializer->serialize($data, 'json'); echo json_encode($sdata); echo '<hr/>'; echo json_encode($data); }}
結果
"{\"name\":\"cc\",\"age\":\"12\"}"
{"name":"cc","age":"12"}