如何在CodeIgniter 4中创建和使用辅助函数

244 阅读1分钟

CodeIgniter 4允许创建帮助文件来存储可重复使用的函数集合。在使用该辅助文件的功能之前,需要加载该辅助文件。

文件被存储在app/Helpers/ 文件夹中。

在本教程中,我将展示如何在CodeIgniter 4中创建辅助函数并在控制器和视图中使用它们。


1.创 建帮手

  • 打开app/Helpers/ 文件夹。
  • 创建2个帮助文件 -
    1. custom1_helper1.php
    2. 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 变量中提到它,否则就在需要的地方加载并使用它。