解決PHP類私有成員 json_encode取不了值的問題

解決PHP類私有成員 json_encode取不了值的問題

<?php

use 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"}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章