php - CodeIgniter 问题 : native PHP sessions, 代码流程,布局问题?

标签 php codeigniter

我刚刚开始使用 CodeIgniter,我正在尝试整理我的常规模块/函数以使它们在 MVC 框架内正常工作。对于具有强大 CodeIgniter 背景的任何人,我有几个具体问题:

session

CodeIgniter session 在客户端将 session 数据存储在 cookie 中,这对我来说是行不通的。我知道有一些替代品,或者我可以构建自己的库/助手;但我只是看不到仅使用 $_SESSION 有任何好处。

如果我只使用$_SESSION,框架的其余部分会有问题吗?框架的任何其他部分是否依赖于使用 CodeIgniter session ?

我觉得为了如此基本的东西而跳出框架有点奇怪,但我对纯 PHP 很满意。我基本上只是希望将 CodeIgniter 用于 MVC,并为我的项目实现更加模块化的方面。

代码流和配置

我有一些配置项需要在几乎所有其他事情之前完成。

例如,假设我有一个常量 APP_LIVE,它根据当前服务器的名称设置为 true/false。这必须尽早发生,因为路径、错误报告、CodeIgniter 系统和应用程序文件夹等都将基于它进行设置。

问题是 system_folderapplication_folder(将根据代码运行的服务器进行设置)首先在 中设置index.php 文件,在加载任何配置之前。

另外,我有一个函数可以检查 URL 中的内容,并且可以在页面加载之前重定向。例如,某些页面需要在 URL 中强制出现 www.(用于 SEO)、跟踪附属机构、访问者来源、营销标志等。

放置此类必须尽早发生的事情的最佳位置在哪里?我知道有一个配置文件、一个自动加载文件、一个常量文件等,但是对于某些项目来说这些已经太晚了。将这些东西简单地放入主 index.php 文件的顶部,或者将其包含到全局配置文件中是一种不好的做法吗?再一次,我觉得我正在走出框架,想知道我这样做是不是因为我还没有充分理解它?

布局/页眉页脚

像大多数人一样,我有顶部页眉、导航、页脚等。我习惯于将它们放在文件中,这些文件包含在我的页面模板中。我相信我可以通过使它们成为 View 并将它们包含到我的主页 View 中来以相同的方式做到这一点。那是最好的方法吗?其中一些需要一些数据;比如他们在哪个页面上进行导航等。处理导航、共享页眉/页脚等的最佳方式是什么?

最佳答案

新发布的 CI 1.7 处理数据库中的 session (如果您正在使用的话)。

但是,CI 被设计为松散耦合,因此如果您决定改用 $_SESSION,您应该不会注意到任何重大问题。

对于页眉/页脚/导航,您可以创建(例如)headerview.php、footerview.php 和 contentview.php,并通过在 Controller 中执行以下操作将数据传递给您的 View :

$data['title'] = 'about us';
$data['content'] = 'hello world!';

$this->load->view('headerview', $data);
$this->load->view('contentview', $data);
$this->load->view('footerview');

基本上,您可以像对待 includes 一样对待这些 View ,但还有一个额外的好处,即您可以更改其中的变量。我会避免从 View 中调用其他 View ,但这可能只是我。

我自己对 index.php 添加了一两次,以设置初始值等,并且从未遇到过问题。

恭喜您选择了框架;我相信你不会失望的。 ;)

关于php - CodeIgniter 问题 : native PHP sessions, 代码流程,布局问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/274482/

相关文章:

php - codeigniter:更改 PHP 数组

php - PyroCMS主题自定义导航结构

php - MySQL : Select query performance issue

javascript - 使用条件在 jquery 中隐藏附加按钮

php - 在 CodeIgniter 中扩展父方法

apache - 强制 Codeigniter HMVC 使用 SSL

php - CodeIgniter 配置字符集和 UTF-8 支持

javascript - 单击按钮后向文本区域添加时间

javascript - 将值从 javascript 传递到 PHP(使用隐藏字段)

php - 在 codeigniter 中检查电子邮件