PHP如何在写入数据库的函数中转储对象?

PHP如何在写入数据库的函数中转储对象?,php,codeigniter,Php,Codeigniter,我使用CodeIgniter,在模型中有一个函数createRecord: public function createRecord($aRecordToSave) { $oLatestRecord = $this->getLatestRecord($aRecordToSave[$this->sForeignKey]); var_dump($oLatestRecord); $this->db->trans_begin(); $this-&g

我使用CodeIgniter,在模型中有一个函数createRecord:

public function createRecord($aRecordToSave) {
    $oLatestRecord = $this->getLatestRecord($aRecordToSave[$this->sForeignKey]);
    var_dump($oLatestRecord);
    $this->db->trans_begin();
    $this->db->where($this->sForeignKey, $aRecordToSave[$this->sForeignKey]);
    $this->db->update($this->sRecordsTable, array('latest' => 0));
  }
当函数仅通过在数据库中写入来执行,并且通过单击“保存”以显示视图立即从“编辑”重定向页面时,如何显示var_dump输出?

var_dump();死亡这个应该很好用

如果只想输出
var\u转储的结果
var_dump
通常用于调试上下文,而不是用于用户上下文的反馈消息

所以,;如果要将消息反馈给用户,最简单的方法是使用
$\u会话
并使用转储var

因此:

public function createRecord($aRecordToSave) {
    ....
    $_SESSION['message'] = print_r($oLatestRecordSignature,true);
    ....
  }
public function createRecord($aRecordToSave) {
    ....
    error_log(print_r($oLatestRecordSignature,true));
    error_log(print_r(debug_backtrace(),true); //optional but useful
    exit; // cease script execution. 
    ....
  }
将保存消息,然后您可以将代码添加到输出页面以显示消息,例如:

if(!empty($_SESSION['message'])){
     print $_SESSION['messge'];
     unset($_SESSION['message]);
}
如果要记录
变量转储的结果并停止执行
与之不同,
var\u dump
不允许您选择数据输出的位置

所以,;如果您想将消息反馈给调试,最简单的方法是使用PHP
errr\u log
并转储var。最好将内容存储在错误日志中,而不是简单地将错误输出到屏幕,因为您可以在每次执行时对代码进行更改时查看错误的发展过程

因此:

public function createRecord($aRecordToSave) {
    ....
    $_SESSION['message'] = print_r($oLatestRecordSignature,true);
    ....
  }
public function createRecord($aRecordToSave) {
    ....
    error_log(print_r($oLatestRecordSignature,true));
    error_log(print_r(debug_backtrace(),true); //optional but useful
    exit; // cease script execution. 
    ....
  }

然后,您可以在错误日志中阅读此详细信息

var\u dump
@DharmaSaputra No.之后调用
exit
exit()
将意味着交易(
->trans\u begin()
)永远不会生效。您可以使用$\u SESSION['output\u data']=print\r($olatesRecordSignature,true);然后使用它或返回$this->db->update($this->sRecordsTable,array('latest'=>0));返回$1,请签名@ShafiqulIslam哦,你的意思和我的回答一样<代码>:-D
@Martin是,但其他是其他选项也可以使用否。die将意味着事务永远不会执行。@Martin这实际上可能是件好事,直到
var\u dump()
完成了帮助debugging@RiggsFolly可能地但我理解的问题是OP不想中断事务。使用
return
发回
$OlatesCordSignature
,不是更简单吗?@WilliamPerron这是一个很好的观点,但我不知道该函数是如何调用的,也不知道该函数期望得到什么。OP特别要求输出到screen,而不是反馈到任何称为函数的类或方法
:-/
非常好,谢谢!只是一个小的后续问题:通过您的代码片段,我得到了stdClass对象([document\u id]=>2162[updated\u at]=>2017-12-20 14:11:41[sort\u order]=>0。我如何仅检索[sort\u order]值?无论是$olatesRecordSignature->sort\u order还是$olatesRecordSignature['sort\u order']都不起作用。@Trinity76
print\r($code>cordsignature->sort\u order,true)
应该可以工作。除非sort order是一个私有变量,否则请检查错误日志,该日志应该告诉您,
print\r