Maison > Questions et réponses > le corps du texte
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 ?
天蓬老师2017-05-16 13:02:38
Référez-vous au document : http://php.net/manual/zh/json...
Téléchargez le code :
class j implements JsonSerializable{
public function jsonSerialize(){
return "Hello world!";
}
}
echo json_encode(new j());
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.
phpcn_u15822017-05-16 13:02:38
Vous aimez ça ?
public function jsonSerialize()
{
return $this->toArray();
}
public function toJson($options = 0)
{
return json_encode($this->jsonSerialize(), $options);
}
PHP中文网2017-05-16 13:02:38
Je n'y connais pas grand chose, alors je l'ai cherché pour vous :
http://www.cnblogs.com/gniele...
phpcn_u15822017-05-16 13:02:38
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