<?php
$CI_INSTANCE = []; # It keeps a ref to global CI instance
function register_ci_instance(\App\Controllers\BaseController &$_ci)
{
global $CI_INSTANCE;
$CI_INSTANCE[0] = &$_ci;
}
function &get_instance(): \App\Controllers\BaseController
{
global $CI_INSTANCE;
return $CI_INSTANCE[0];
}
use App\Models\Loginmodel as Loginmodel;
function isLogged($ci,$e,$c){
$ci->login = new Loginmodel;
$ci->login->Like('paassword',$c);
$id=$ci->login->select('id')->where('username',$e)->findAll();
return $id;
}
if (!function_exists('getSegment'))
{
/**
* Returns segment value for given segment number or false.
*
* @param int $number The segment number for which we want to return the value of
*
* @return string|false
*/
function getSegment(int $number)
{
$request = \Config\Services::request();
if ($request->uri->getTotalSegments() >= $number && $request->uri->getSegment($number))
{
return $request->uri->getSegment($number);
}
else
{
return false;
}
}
}
4条答案
按热度按时间c0vxltue1#
我有个要点,这里有个方法。
1.创建一个帮助文件,你可以随意命名它。
1.将以下代码添加到刚刚创建的帮助器中。
帮助文件的内容:例如:utility_helper.php
1.在基本控制器的最开始调用
register_ci_instance($this)
1.现在您可以在任何需要的地方使用
get_instance()
,就像CI3一样:$ci = &get_instance()
我想提三个注意事项
get_instance
时是否需要&
。但是,您可以选择使用任何您想要的形式。因此,调用$ci = get_instance()
也是可以的,但是您可以根据需要使用$ci = &get_instance()
。\App\Controllers\BaseController
更改为适当的值(即:您基本控制器)。类型提示非常好,因为IDE可以理解它们。ncgqoxb02#
我明白了(使用CodeIgniter4):
在控制器中:
在帮助程序中:
我希望这能帮上忙。
vs91vp4v3#
创建一个公共助手来保存控制器示例。
在您的
BaseController
中现在,您将获得所有其他助手中的控制器示例。
我在
PHP Version: 8.0.6
中测试了它8yoxcaq74#
对我来说,这是对我最好的解决方案:
来源:https://forum.codeigniter.com/thread-74755.html