CodeIgniter4设置session变量为公共变量
开发学院2022-05-10 19:13:20
在codeigniter 4中如果想访问session,根据文档,我们必须首先声明
$session = \Config\Services::session();
如果我把它写在控制器名称的上面
<?php namespace App\Controllers; $session = \Config\Services::session(); class Home extends BaseController { }
我不能在任意位置访问$session变量,即使我在_construct中写了它,它也不是随处可用的,我只能在使用的时候事先声明它,但是我想对它进行全局设置,有何办法?
解决方案1
<?php namespace App\Controllers; class Home extends BaseController { protected $session; function __construct() { $this->session = \Config\Services::session(); $this->session->start(); } public function code4() { $newdata = [ 'username' => 'johndoe', 'email' => 'johndoe@some-site.com', 'logged_in' => TRUE ]; $this->session->set($newdata); // setting session data echo $this->session->get("username"); } }
解决方案2
您可以在任何需要的地方使用函数session()。这是访问会话实例的便捷方法。
session(); // instantiate the session class
如果不传递参数,它将返回一个会话类实例。如果共享实例存在,它将返回一个共享实例;如果不存在,它将返回一个新创建的实例。
一旦会话被实例化,使用$_SESSION是设置会话数据的最有效方式。
$_SESSION['username'] = 'johndoe'; $_SESSION['email'] = 'johndoe@some-site.com'; $_SESSION['logged_in'] = TRUE;
传递参数可以获取指定键的数据
$userName = $session('username');
或者,您可以像这样使用会话方法。
$session = session(); $userName = $session->get('username');
无需加载助手函数来使用它,session()总是被自动加载和可用的。
相关文章
- UE5敌人直接放置场景ok,代码生成不执行AI
- UE5中开发HD-2D游戏的优化设置与2D角色导入技巧
- nginxSpringboot项目常见配置
- 在MacOS上部署ComfyUI的指南
- 解决UE5开发Topdown2D动作游戏的旋转问题
- UE5开发2D游戏设置排序的步骤.
- 大幅提升FPS!Unreal Engine 5 最佳 2D 设置
- Aseprite在线编译教程
- 探索Nexa AI:开源边缘智能的新纪元
- Springboot项目允许根目录txt文件被访问
- lnmp一键安装包多php环境安装
- Python虚拟环境整合包制作:一键打包与运行指南
- aws云服务器使用root登录
- nginx配置允许跨域
- nginx配置springboot反向代理,同时允许上传路径可以直接被访问
- CentOS8更换国内安装源
- 在Linux中使用FFmpeg修剪视频
- uniapp项目(app,小程序)html内容图片尺寸超出屏幕修复
- uniapp启用微信小程序按需注入
- mysql 批量替换指定字符