Perbezaan antara kaedah toJson dan kaedah jsonSerialize?
大家讲道理
大家讲道理 2017-05-16 13:00:38
0
4
745

Apabila saya melihat kaedah kelas Illuminate\Support\MessageBag, kelas kelihatan seperti ini:

gunakan JsonSerializable;
gunakan Illuminate\Contracts\Support\Jsonable;
....

kelas MessageBag melaksanakan Jsonable, JsonSerializable...

/*
 * Tukar objek kepada perwakilan JSONnya.
 */
fungsi awam toJson ($pilihan = 0) {
    kembalikan json_encode($this->jsonSerialize(), $options);
}

/*
 *Tukar objek kepada sesuatu yang boleh bersiri JSON.
 */
fungsi awam jsonSerialize() {
    kembalikan $this->toArray();
}

Sila beritahu saya, warga emas, apakah perbezaan antara kaedah toJson dan kaedah jsonSerialize? Bilakah ia akan dipanggil secara tersirat?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(4)
Peter_Zhu

Rujuk dokumen: http://php.net/manual/zh/json...
Muat naik kod:

class j implements JsonSerializable{
    public function jsonSerialize(){
        return "Hello world!";
    }
}
echo json_encode(new j());

JsonSerializable sendiri secara khusus menghidangkan siri json_encode, dan toJson hanyalah kaedah laravel Jsonable.

Dalam erti kata lain, apabila anda menggunakan json_encode untuk menyerikan objek ini, kaedah jsonSerialize akan dipanggil.

Dan toJson anda biasanya hanya merangkum fungsi json_encode, hanya untuk semantik.

phpcn_u1582

Macam ni?

 public function jsonSerialize()
    {
        return $this->toArray();
    }

public function toJson($options = 0)
    {
        return json_encode($this->jsonSerialize(), $options);
    }    
Ty80

Saya tidak tahu banyak tentangnya, jadi saya mencarinya untuk anda:
http://www.cnblogs.com/gniele...

phpcn_u1582

Terima kasih atas jemputan!

Oleh kerana saya tidak pernah menggunakan larva, bolehkah anda menghantar kod khusus kaedah toJson dan kaedah jsonSerialize

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan