CodeIgniter 4允许创建帮助文件来存储可重复使用的函数集合。在使用该辅助文件的功能之前,需要加载该辅助文件。
文件被存储在app/Helpers/ 文件夹中。
在本教程中,我将展示如何在CodeIgniter 4中创建辅助函数并在控制器和视图中使用它们。
1.创 建帮手
- 打开
app/Helpers/文件夹。 - 创建2个帮助文件 -
- custom1_helper1.php
- custom2_helper2.php
1.创建app/Helpers/custom1_helper.php 文件。
- 创建了2个函数
- fun1()
- randomstring()
完成的代码
<?php
if(!function_exists('fun1')){
function fun1(){
return "helper function 1";
}
}
if(!function_exists('randomstring')){
function randomstring($length = 8) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
}
2.创建app/Helpers/custom2_helper.php 文件。
- 创建了2个函数
- fun2()
- checkeven()
已完成的代码
<?php
if(!function_exists('fun2')){
function fun2(){
return "helper function 2";
}
}
if(!function_exists('checkeven')){
function checkeven($num = 0) {
if($num%2 == 0){
return "Even";
}else{
return "Odd";
}
}
}
2.例 子1 (在控制器中调用)
- 创建
PageController控制器 -
php spark make:controller PageController
- 打开
app/Controllers/PageController.php文件。 - 创建
index()方法 -- 在
helper()中传递帮助文件的名称来加载,例如:helper('custom1_helper')。
- 在
注意你也可以调用它为 -
helper('custom1');。
-
- 直接调用辅助函数,例如:
randomstring();。
- 直接调用辅助函数,例如:
完成的代码
<?php
namespace App\Controllers;
class PageController extends BaseController{
public function index(){
helper('custom1_helper'); // Loading single helper
// Calling functions
$fun1 = fun1();
$randomstr = randomstring();
echo "fun1 : ".$fun1."<br><br>";
echo "randomstr : ".$randomstr;
}
}
输出
fun1 : helper function 1
randomstr : kTh0DUEk
3.例 子2 (加载多个帮助器)
- 创建
PageController控制器 -
php spark make:controller PageController
- 打开
app/Controllers/PageController.php文件。 - 创建
index()方法 -- 加载2个助手文件。为此,指定文件名为Array格式。
helper(['custom1_helper','custom2_helper']);
-
- 直接调用函数。
完成的代码
<?php
namespace App\Controllers;
class PageController extends BaseController{
public function index(){
// Loading helpers
helper(['custom1_helper','custom2_helper']);
// custom1_helper functions
$fun1 = fun1();
$randomstr = randomstring();
echo "fun1 : ".$fun1."<br><br>";
echo "randomstr : ".$randomstr."<br><br>";
// custom2_helper functions
$fun2 = fun2();
$evenOrOdd = checkeven(91);
echo "fun2 : ".$fun2."<br><br>";
echo "evenOrOdd : ".$evenOrOdd."<br><br>";
}
}
输出
fun1 : helper function 1
randomstr : GMTO9qCs
fun2 : helper function 2
evenOrOdd : 91 is Odd
4.例 子3 (在视图中加载)
控制器 -
- 创建
PageController控制器 -
php spark make:controller PageController
- 打开
app/Controllers/PageController.php文件。 - 创建
index()方法 -- 加载
index视图。
- 加载
完成的代码
<?php
namespace App\Controllers;
class PageController extends BaseController{
public function index(){
return view('index');// Load index view
}
}
视图 -
- 在
app/Views/中创建index.php文件。 - 加载一个帮助器与控制器是一样的。
- 在
helper()中指定帮助器文件名。 - 直接调用帮助器函数进行访问。
完成的代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>How to create and use Helper function in CodeIgniter 4</title>
</head>
<body>
<?php
// helper("custom1_helper"); // Single helper loading
helper(["custom1_helper","custom2_helper"]); // Multiple helper loading
?>
<?php
// custom1_helper functions
$fun1 = fun1();
$randomstr = randomstring();
echo "fun1 : ".$fun1."<br><br>";
echo "randomstr : ".$randomstr."<br><br>";
// custom2_helper functions
$fun2 = fun2();
$evenOrOdd = checkeven(91);
echo "fun2 : ".$fun2."<br><br>";
echo "evenOrOdd : ".$evenOrOdd."<br><br>";
?>
</body>
</html>
输出
fun1 : helper function 1
randomstr : GMTO9qCs
fun2 : helper function 2
evenOrOdd : 91 is Odd
4.例 4 (全局加载)
为此,需要在BaseController.php 文件中的$helpers 变量中指定帮助器的名称。在指定了辅助函数后,就可以在控制器和视图中无需加载。
BaseController.php
- 打开
app/Controllers/BaseController.php文件。 - 在
$helpers变量中指定辅助函数的名称。
// protected $helpers = ['custom1_helper','custom2_helper']; // Multiple helper loading
protected $helpers = ['custom1_helper']; // Single helper loading
- 只加载了一个辅助函数 -
custom1_helper。
完成的代码
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
use CodeIgniter\HTTP\CLIRequest;
use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
class BaseController extends Controller{
protected $request;
protected $helpers = ['custom1_helper'];
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
}
}
控制器 -
- 创建
PageController控制器 -
php spark make:controller PageController
- 打开
app/Controllers/PageController.php文件。 - 创建
index()方法- 加载
index视图。
- 加载
完成的代码
<?php
namespace App\Controllers;
class PageController extends BaseController{
public function index(){
// Loading helpers
helper('custom2_helper');
// custom1_helper functions
$fun1 = fun1();
echo "fun1 : ".$fun1."<br><br>";
// custom2_helper functions
$fun2 = fun2();
echo "fun2 : ".$fun2."<br><br>";
return view('index');// Load index view
}
}
视图 -
- 在
app/Views/,创建index.php文件。 - 加载帮助器与控制器相同。
- 在
helper()中指定帮助器文件名。 - 直接调用帮助器函数进行访问。
完成的代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>How to create and use Helper function in CodeIgniter 4</title>
</head>
<body>
<?php
helper("custom2_helper"); // Single helper loading
?>
<?php
// custom1_helper functions
$randomstr = randomstring();
echo "randomstr : ".$randomstr."<br><br>";
// custom2_helper functions
$evenOrOdd = checkeven(91);
echo "evenOrOdd : ".$evenOrOdd."<br><br>";
?>
</body>
</html>
输出
fun1 : helper function 1
fun2 : helper function 2
randomstr : 0FDzYqjk
evenOrOdd : 91 is Odd
5.总 结
如果你想在所有的控制器和视图中使用辅助函数,那么在app/Controllers/BaseController.php 文件$helpers 变量中提到它,否则就在需要的地方加载并使用它。