thinkphp5下json_encode问题
我在model层下建立User.php, User.php里有个方法getUserInfo来查询数据的,如下:
public function getUser() { return $this->where('id', 8)->find(); }
然后在controller控制器下, 实例化该用户模型, 调用实例的getUserInfo,打印数据
$userModel = new UserModel; dump($userModel->getUser()); dump(json_encode($userModel->getUser()));
第一个打印出来的数据如下
object(app\index\model\User)#10 (32) { ["dateFormat":protected] => string(5) "Y/m/d" ["type":protected] => array(1) { ["birthday"] => string(9) "timestamp" } ["insert":protected] => array(1) { ["status"] => int(1) } ["connection":protected] => array(0) { } ["parent":protected] => NULL ["query":protected] => NULL ["name":protected] => string(4) "User" ["table":protected] => NULL ["class":protected] => string(20) "app\index\model\User" ["error":protected] => NULL ["validate":protected] => NULL ["pk":protected] => NULL ["field":protected] => array(0) { } ["readonly":protected] => array(0) { } ["visible":protected] => array(0) { } ["hidden":protected] => array(0) { } ["append":protected] => array(0) { } ["data":protected] => array(7) { ["id"] => int(8) ["nickname"] => string(4) "1111" ["name"] => string(4) "c某" ["password"] => string(6) "111111" ["create_time"] => int(0) ["update_time"] => int(0) ["status"] => int(0) } ["origin":protected] => array(7) { ["id"] => int(8) ["nickname"] => string(4) "1111" ["name"] => string(4) "c某" ["password"] => string(6) "111111" ["create_time"] => int(0) ["update_time"] => int(0) ["status"] => int(0) } ["relation":protected] => array(0) { } ["auto":protected] => array(0) { } ["update":protected] => array(0) { } ["autoWriteTimestamp":protected] => bool(true) ["createTime":protected] => string(11) "create_time" ["updateTime":protected] => string(11) "update_time" ["isUpdate":protected] => bool(true) ["updateWhere":protected] => array(1) { ["id"] => array(2) { [0] => string(2) "eq" [1] => int(8) } } ["failException":protected] => bool(false) ["useGlobalScope":protected] => bool(true) ["batchValidate":protected] => bool(false) ["resultSetType":protected] => string(5) "array" ["relationWrite":protected] => NULL }
而调用json_encode方法打印json是这样子
string(132) "{"id":8,"nickname":"1111","name":"c\u67d0","password":"111111","create_time":"1970\/01\/01","update_time":"1970\/01\/01","status":0}"
我自己测试json_encode的value如果是对象,则会输出对象的公共属性, 测试代码如下:
class TestClass { public $foo; public function __construct($foo) { $this->foo = $foo; } public function __toString() { return $this->foo; } } $class = new TestClass('Hello'); var_dump(json_encode($class));
打印出则是string(15) "{"foo":"Hello"}" , 为什么thinkphp下的json_encode会打印这样的数据
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
原来在thinkphp5下的Model.php实现了JSON 序列化接口, 调用了Model.php的toArray方法,所以json_encode才会输出这样的数据出来.
参考资料:
JSON 序列化接口