php - toJson方法和jsonSerialize方法的区别?
大家讲道理
大家讲道理 2017-05-16 13:00:38
0
4
703

我在看 Illuminate\Support\MessageBag类方法时,类是这样的:

use JsonSerializable;
use Illuminate\Contracts\Support\Jsonable;
....

class MessageBag implements Jsonable, JsonSerializable...

/*
 * Convert the object to its JSON representation.
 */
public function toJson ($options = 0) {
    return json_encode($this->jsonSerialize(), $options);
}

/*
 *Convert the object into something JSON serializable.
 */
public function jsonSerialize() {
    return $this->toArray();
}

请教各位前辈,toJson方法和jsonSerialize方法的区别是什么呢?什么时候会隐式调用呢?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!