【问题标题】:CodeIgniter - functions available in multiple controllersCodeIgniter - 多个控制器中可用的功能
【发布时间】:2011-07-27 08:43:48
【问题描述】:

我对 CodeIgniter 比较陌生,到目前为止,我的项目完全是使用控制器和视图创建的。然而,随着它变得越来越复杂,我发现我已经将某些功能复制粘贴到多个控制器中——这并不理想,因为编辑一个需要记住编辑所有其他的。

有很多我一无所知的 CI 功能 - 模型、助手、扩展“控制器”等等。我应该在哪里寻找以完成上述任务?我想我也可以直接import() 一段代码,虽然我觉得这不是“CodeIgniter 方式”。

【问题讨论】:

    标签: function codeigniter controller


    【解决方案1】:

    将所有“实用程序”功能放入“帮助管理器”并访问它。

    http://codeigniter.com/user_guide/general/helpers.html

    【讨论】:

    • 感谢您的链接。这篇文章没有说明如何创建我自己的助手。是否像在 以“MY_”开头的 helpers 文件夹中创建文件一样简单?
    • 如果加载两个具有相同函数名的助手会发生什么?调用时会执行哪个函数?
    • 您应该扩展具有相同函数名称的“Helper”(即 MY_array_helper.php)。如果你不这样做,我不确定,但很可能它会调用 PHP 中最后定义的方法。
    【解决方案2】:

    或者创建一个基本控制器,并从中扩展其他控制器。

    我确信 Phil Sturgeon 对此有指导:http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY

    【讨论】:

    • 菲尔对一切都有指导
    【解决方案3】:

    base_controller.php

    <?php
    class Base_Controller extends CI_Controller {
        function __construct()
        {
            parent::__construct();
        }
        function base_function(){
    
            }
    }
    ?>
    

    other_controller.php

    <?php
    require_once('base_controller.php');
    class Other_Controller extends Base_Controller{
        function __construct()
        {
            parent::__construct();
        }
        function index()
        {
        $this->base_function(); 
        }
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 2020-11-17
      • 1970-01-01
      相关资源
      最近更新 更多