CI 扩展 session 类遇到的问题

2016-01-13 10:53:00 +08:00
 sensui7
Class MY_Session Extends CI_Session

提示 Class 'CI_Session' not found in MY_Session.php.

这个 MY_Session 是 github 上的 cnsaturn/codeigniter-my-session,

我的 ci 是 2.x,

我发现, ci 的 session 的文件名是 Session, 而类名是 CI_Session, 这是不是要我自己解析呢?
2520 次点击
所在节点    PHP
10 条回复
JiShuTui
2016-01-13 11:01:16 +08:00
把你下载的 My_Session.php 文件放在 app/Libraries 目录下
或者赶紧升级使用 CI 3.x 版本吧
sensui7
2016-01-13 11:06:22 +08:00
@JiShuTui 是放在 app/libraries 下了, 版本是 2.2.5, 奇了怪了.
alex321
2016-01-13 11:29:16 +08:00
先 $this->load->library('session'); 了么?
heraldboy
2016-01-13 11:29:29 +08:00
文件名是: MY_Session.php
有些 php 环境是大小写敏感的, CI 对文件名的大小写也有严格的规定,你再仔细检查一下,并看看官方文档关于文件名的大写问题。
建议升级到 3.0 ,这样会避免一些不是问题的问题。
以上答案在无法了解你环境的情况无法验证。
sensui7
2016-01-13 11:39:09 +08:00
@alex321 就是之前也得 load 原 session? 加上之后到是不报错了,
感觉好像不是太灵活呢?
alex321
2016-01-13 11:43:57 +08:00
@sensui7 CI 中, MY_ 是针对原来类库或者控制器的扩展。。你使用之前必须加载原来的。当然,加载了原来的就会加载你自定义的。。
我赶脚比较好,按需加载,如果觉得麻烦,自己写个 hook 或者其他啥的搞个判断不存在对象就自动加载。我个人还是比较习惯手工加载,但也不排除有些项目会偷懒。

然后,尽快换到 3.0 吧, session 完全重写了。
sensui7
2016-01-13 11:54:24 +08:00
@alex321 那样的话, 其实就是 $this->load->library('session');就行了吗,不需要加载我自己的? 而且貌似也只能这样了吧,
alex321
2016-01-13 11:58:53 +08:00
@sensui7 不用加载自己的,有空再仔细看下 CI 的执行机制。。
sensui7
2016-01-13 12:08:10 +08:00
@alex321 基本没看执行机制, 就是想快速做一个东西....
ccdarkness
2016-01-13 14:14:33 +08:00
试一试在 config 文件夹下 autoload.php 中自动加载 $autoload['libraries'] = array('Form_validation','session');

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/250367

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX