我不清楚如何使 PHP 类文件在 Laravel 上具有不同的输出?

$taxonomies = $post->taxonomies()->get();

但是当我使用“echo”语句时,它的结果是如下所示的字符串。


echo $taxonomies[0];

// {"term_taxonomy_id":317,"term_id":317,"taxonomy":"skill","description":"","parent":0,"count":1,"pivot":{"object_id":4886,"term_taxonomy_id":317},"term":{"term_id":317,"name":"Consulting","slug":"consulting","term_group":0}}

但是当我使用“print_r”语句时,它的结果是如下所示的对象


print_r($taxonomies[0]);


Corcel\Model\Taxonomy Object

(

    [table:protected] => term_taxonomy

    [primaryKey:protected] => term_taxonomy_id

    [with:protected] => Array

        (

            [0] => term

        )


    [timestamps] => 

    [postType:protected] => 

    [connection:protected] => wordpress

    [keyType:protected] => int

    [incrementing] => 1

    [withCount:protected] => Array

        (

        )


    [perPage:protected] => 15

    [exists] => 1

....

我不清楚它是如何工作的?


千巷猫影
浏览 98回答 2
2回答

繁花如伊

情况是echo将某个类的 object 转换为string。而你,作为开发者,可以使用魔法方法__toString来控制这个过程。深入研究代码,您可以看到Corcel\Model\Taxonomy扩展了类,而类又扩展了lluminate\Database\Eloquent\Model。这个类中有一个__toString方法可以将你的对象转换为 json。至于print_r- 该函数不会将对象转换为任何其他类型,只是输出可读的对象表示。

胡说叔叔

一种是 JSON 表示法,另一种是内存中实例的转储。使用serialize()或 来json_enode()获得不同的输出。
打开App,查看更多内容
随时随地看视频慕课网APP