Rumah > Soal Jawab > teks badan
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?
天蓬老师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.
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);
}
PHP中文网2017-05-16 13:02:38
Saya tidak tahu banyak tentangnya, jadi saya mencarinya untuk anda:
http://www.cnblogs.com/gniele...
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