以前我使用Codeigniter 3,我加载所有的助手,库使用autoload.php。现在迁移到CI4,在那里我尝试了以下内容:
BaseController.php中加载我的助手文件__construct上加载Controller.php中的助手。我有一个图书馆说Demo.php和函数check_user_logged()。当我从函数中调用我的get_cookie()时,它是Call to undefined function App\Libraries\get_cookie()。
此函数在从控制器调用时为check_user_logged(),
<?php
use App\Libraries\Demo;
protected $demo;
public function __construct()
{
helper('cookie');
$this->demo = new Demo();
}
public function index()
{
$this->demo->check_user_logged();
}The Demo.php
<?php
namespace App\Libraries;
Class Demo
{
public function check_user_logged()
{
print_r(get_cookie('name')); // just for simplicity printing the cookie
}
}它是在Demo库构造函数中加载cookie助手的唯一方法吗?还是我漏掉了什么?
发布于 2022-09-24 10:48:55
我个人更喜欢在需要的特定函数/类中加载助手。
备选案文1:
在库的构造函数中加载cookie助手。
<?php
namespace App\Libraries;
class Demo
{
public function __construct()
{
helper('cookie');
}
public function check_user_logged()
{
print_r(get_cookie('name')); // just for simplicity printing the cookie
}
}备选案文2:
在库的方法中加载cookie助手。
get_cookie()从当前的Request对象而不是从Response获取cookie。此函数检查是否设置了$_COOKIE数组并立即获取它。
<?php
namespace App\Libraries;
class Demo
{
public function check_user_logged()
{
helper('cookie');
print_r(get_cookie('name')); // just for simplicity printing the cookie
}
}备选案文3A:
把饼干放进当前响应的cookie集合里。
<?php
namespace App\Libraries;
class Demo
{
public function check_user_logged()
{
print_r(\Config\Services::response()->getCookie('name')); // just for simplicity printing the cookie
}
}备选方案3B:
使用cookies(...)全局函数。不需要装任何帮手。
获取由
CookieStore持有的全局Response实例。
<?php
namespace App\Libraries;
class Demo
{
public function check_user_logged()
{
print_r(cookies()->get('name')); // just for simplicity printing the cookie
}
}发布于 2022-09-29 09:15:17
在CI4中加载通用cookie助手应该可以工作。
protected $helpers = ['cookie','my_security_helper' ];你能把你的原始错误代码寄出去吗?
https://stackoverflow.com/questions/73832756
复制相似问题