Quand je regarde les méthodes de la classe Illuminate\Support\MessageBag
, la classe ressemble à ceci :
utilisez JsonSerializing ;
utilisez Illuminate\Contracts\Support\Jsonable ;
....
la classe MessageBag implémente Jsonable, JsonSerializing...
/*
* Convertissez l'objet en sa représentation JSON.
*/
fonction publique toJson ($options = 0) {
return json_encode($this->jsonSerialize(), $options);
}
/*
*Convertissez l'objet en quelque chose de sérialisable JSON.
*/
fonction publique jsonSerialize() {
return $this->toArray();
S'il vous plaît, dites-moi, seniors, quelle est la différence entre la méthode toJson et la méthode jsonSerialize ? Quand sera-t-il appelé implicitement ?
Référez-vous au document : http://php.net/manual/zh/json...
Téléchargez le code :
JsonSerializing lui-même sert spécifiquement la sérialisation json_encode, et toJson n'est que la méthode Jsonable de laravel.
En d'autres termes, lorsque vous utilisez json_encode pour sérialiser cet objet, la méthode jsonSerialize sera appelée.
Et votre toJson encapsule généralement simplement la fonction json_encode, juste pour la sémantique.
Vous aimez ça ?
Je n'y connais pas grand chose, alors je l'ai cherché pour vous :
http://www.cnblogs.com/gniele...
Merci pour l'invitation !
Parce que je n'ai jamais utilisé larval, pouvez-vous poster le code spécifique de la méthode toJson et de la méthode jsonSerialize