【问题标题】:Destruct Codeigniter Library Before View Output在查看输出之前销毁 Codeigniter 库
【发布时间】:2013-03-02 12:54:53
【问题描述】:

我在 Codeigniter 中有一个自定义库,可以在销毁时创建会话 cookie。

public function __destruct()
{
    $this->CI->session->set_userdata('user', $this->user);
}

这失败了,因为在类被破坏之前视图已经发送了标题。

我知道我可以在输出视图之前手动破坏库。我的问题是,是否可以在发送任何标头之前让我的库自动销毁?

是否有我可以使用的钩子或 codeigniter 中的某些功能会破坏所有库/模型?

编辑

经过反复试验,我发现我无法在需要的时候手动销毁库。我尝试了几种方法,但该库仍在范围内且无法取消设置。

【问题讨论】:

  • 您是否有理由希望在__destruct() 上发生这种情况?
  • @complex857 是的。我的应用程序从 CI 会话中设置和获取信息,并且由于我将会话数据存储在数据库中,因此我只想在应用程序结束时提交更改。我不想依靠控制器记住存储会话,而是想在清理时存储它。
  • 你不能把它挂在其中一个钩子上吗?喜欢post_controller,还是post_controller_constructor?如果您也将渲染移到 post_controller 挂钩中,则可能会避免您的标头发送问题。据我所知,CI 并没有真正做明确的拆解,只是在一切完成后让 php 来处理。

标签: codeigniter destructor php


【解决方案1】:

您必须使用 HOOKS。只需在 config.php 中启用它,然后将新 Hook 添加到您的 Hooks 文件夹中。并且不要忘记添加信息,关于在 CONFIG 目录上的 hooks.php 中加载的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 2010-11-24
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多