Différence entre la méthode toJson et la méthode jsonSerialize ?
大家讲道理
大家讲道理 2017-05-16 13:00:38
0
4
738

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épondre à tous(4)
Peter_Zhu

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_u1582

Vous aimez ça ?

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

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

Je n'y connais pas grand chose, alors je l'ai cherché pour vous :
http://www.cnblogs.com/gniele...

phpcn_u1582

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal