【问题标题】:Warning/Notice/Strict with Phalcon警告/通知/严格使用 Phalcon
【发布时间】:2014-09-30 23:12:00
【问题描述】:

我正在使用 Phalcon 1.3.3 和 PHP 5.4。 在我的控制器中,我有类似的东西:

public function indexAction() {
    $this->response->setContentType('application/json');
    $data = json_encode(['some data']);

    $this->response->setContent($data);
    return $this->response->send();
}

如果我在这个动作中添加一个“回声”,我在任何地方都看不到它,我认为这是因为 Phalcon 使用缓冲区输出 (It is possible to get Phalcon\Mvc\View rendered output in variable?)

但这不是我的问题,我的问题是,如果我有关于缺少变量、未声明的常量或使用不推荐使用的方法的警告/通知,我在呈现的页面上看不到这些。 我可以在日志中看到它们,但看不到页面本身,这在开发时有点烦人。在生产中,这显然不是问题。

PS:我将“display_errors”和“display_startup_errors”设置为 1,如果我在呈现页面之前设置存在,我会看到所有警告

【问题讨论】:

  • 我猜,你设置回显后响应的内容?我认为 phalcon 会检查 $response->content 是否已设置,并且仅当它没有放入 ob_get_clean()
  • 但是有没有办法避免这种情况?
  • 是的,假设您仅将 echo 用于调试目的:使用 die()
  • 好吧,我不想使用 echo 进行调试,我希望能够看到正常的 PHP 警告。查看错误日志“更慢”。
  • 在这种情况下,您找错地方了。看看XDebug。根据您的操作系统,您可以使用apt-get install php5-xdebug 安装它。另请阅读 phalcons 自己的指南 Debugging Applications

标签: php phalcon


【解决方案1】:

我用这个来返回json:

    $expireDate = new \DateTime();

    $this->response->setHeader('Access-Control-Allow-Origin', '*');
    $this->response->setContentType('application/json', 'UTF-8');
    $this->response->setExpires($expireDate);
    $this->response->setHeader('Cache-Control', 'private, max-age=0, must-revalidate');
    $this->response->sendHeaders();
    echo json_encode(array('response' => $response, 'error' => $this->api_error));

在 index.php 中

/**
 * Handle the request
 */
$application = new \Phalcon\Mvc\Application($di);
//disable view service in general
$application->useImplicitView(false);

如果你只想在某些地方禁用视图渲染,你可以在控制器中使用:

$this->view->disable(); 
echo $data;

【讨论】:

  • 这有点工作,因为我正在构建一个 API 并且我不需要视图。但是我认为这对于使用视图的人来说是个问题...
  • 这段代码来自我的 API,我不使用视图服务,所以它在 index.php 中被禁用了这一行: $application->useImplicitView(false);如果有些动作必须使用视图,而有些动作则不需要,那么 $this->view->disable(); (从任何控制器调用)非常方便:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 2015-03-15
  • 2021-03-09
  • 2015-01-30
  • 1970-01-01
  • 2013-04-25
  • 2013-01-24
相关资源
最近更新 更多