cari

Rumah  >  Soal Jawab  >  teks badan

Perbezaan antara kaedah toJson dan kaedah jsonSerialize?

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?

大家讲道理大家讲道理2751 hari yang lalu730

membalas semua(4)saya akan balas

  • 天蓬老师

    天蓬老师2017-05-16 13:02:38

    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.

    balas
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:02:38

    Macam ni?

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

    balas
    0
  • PHP中文网

    PHP中文网2017-05-16 13:02:38

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

    balas
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:02:38

    Terima kasih atas jemputan!

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

    balas
    0
  • Batalbalas