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()总是被自动加载和可用的。
相关文章
- suncae安装记录
- Ubuntu24 LNMP Nginx 启动失败 & PHP 页面 502 错误完整排查
- Ubuntu 24.04 LNMP+Redis自动安装脚本
- JAVA大整数传递给前端丢失精度问题解决指南
- JDK21实现高性能 Snowflake ID生成器
- Rocky Linux 10 tmux安装使用教程
- 新版 Ollama 中导入外部模型 GGUF 模型
- 当 Web 开发绕回 “一体化”,PHP 玩家的底气在哪?
- 重磅:LFM2.5-1.2B-Thinking发布 1GB内存即可实现端侧高效推理
- MyBatis-Plus升级踩坑记录:一个依赖缺失引发的“惨案”
- spring+netty实现一个最小可运行的im server
- windows修改ollama程序和模型保存位置
- UE5中使用蓝图实现对象池功能
- UE5开发2D/3D混合平台跳跃游戏优化操作体验
- UE5敌人直接放置场景ok,代码生成不执行AI
- UE5中开发HD-2D游戏的优化设置与2D角色导入技巧
- nginxSpringboot项目常见配置
- 在MacOS上部署ComfyUI的指南
- 解决UE5开发Topdown2D动作游戏的旋转问题
- UE5开发2D游戏设置排序的步骤.