Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将对象的公共属性转换为JSON的最快方法是什么_Php_Json - Fatal编程技术网

Php 将对象的公共属性转换为JSON的最快方法是什么

Php 将对象的公共属性转换为JSON的最快方法是什么,php,json,Php,Json,我的用例: 使用PDO从数据库中选择500行。 关闭仿真模式以获取本机数据类型 使用fetchObject'ClassName'获取行 现在我有了一个包含500个填充对象的数组,我想把它转换成JSON a.f.a.p 目前我正在使用以下方法: function get_object_public_vars($object) { return get_object_vars($object); } class Model implements \JsonSerializable { pu

我的用例:

使用PDO从数据库中选择500行。 关闭仿真模式以获取本机数据类型 使用fetchObject'ClassName'获取行 现在我有了一个包含500个填充对象的数组,我想把它转换成JSON a.f.a.p

目前我正在使用以下方法:

function get_object_public_vars($object) {
   return get_object_vars($object);
}

class Model implements \JsonSerializable {
 public $property1;
 public $property2;
 private $property3;

 public function jsonSerialize() {
   return get_object_public_vars($this);
 }
}
那我会的

// $dbStatement is a PDOStatement with a MySQL select query prepared
$a500objects = $dbStatement->fetchAll(\PDO::FETCH_CLASS, 'Model');
echo json_encode($a500objects);
现在我做了一些测试,如果我改为做$dbStatement->fetchAll;没有class_name参数。代码运行速度快得多,并且在选择更多行时会进行缩放

但是,我需要“模型”对象来实现一些应用程序逻辑。运行get_object_vars 500x似乎需要时间。即使使用OpCache

有人知道将类“Model”的对象解析为JSON的更快方法吗?

您尝试过吗

公共函数jsonSerialize { 回来 [ 'property1'=>$this->property1, 'property2'=>$this->property2, 'property3'=>$this->property3, ]; }
使用fetchAll?虽然我不确定我是否理解您的问题,也不确定它是否与PDO有关。代码的缓慢部分是在转换为JSON或作为对象获取时。这里您讨论的是序列化对象,这里您讨论的是获取记录。这里你写的是$A500对象,它表示一个由500个对象组成的数组,这里是fetchObject'Model';当它返回单个对象时,PDO部分很快,查询大约需要1ms。我正在while循环中使用fetchObject。我应该在我的例子中写下fetchAll。性能上的区别在于,当作为“模型”进行抓取时,它必须经过jsonSerialize和get_object_vars,这是我分析此文件时必须花费时间的地方。我尝试了此方法以查看get_object_vars是否慢。令我惊讶的是,它的表现也一样。