【问题标题】:How to autoload codeigniter4 library once and access it every where in Controller, Model, View like in CI3如何一次自动加载 codeigniter4 库并在控制器、模型、视图中的每个位置访问它,就像在 CI3 中一样
【发布时间】:2020-08-14 13:15:05
【问题描述】:

在 CI3 中,我们创建自定义库并在 config/autoload.php 中自动加载它,然后我们可以通过简单的 $this->rules->status() 在控制器、模型、视图中的任何地方使用它,其中 Rules 是库中的应用程序/库文件夹

但在 CI 4 中无法做同样的事情,是否有任何替代方案可供选择

【问题讨论】:

    标签: codeigniter codeigniter-3 codeigniter-4


    【解决方案1】:

    如果你想加载你自己的库,你必须依赖命名空间并在你想使用这个库时创建一个新对象。还要确保检查app/Config/Autoload.php 文件,以便自动加载器知道您的自定义库。
    由于 codeigniter 3 超级对象已被删除,您无法随时随地访问它。但是,您可以将其加载到视图、控制器和模型中,并使您的视图、控制器和模型扩展它。

    例如,在app/Librairies 中名为FooLib 的库将是:

    namespace App\Libraries;  
    
      class FooLib {
    
        public function __construct() {
          // your constructor
        }
    
        // ...
        
       }
    

    如果你想在控制器中调用它:

    namespace App\Controllers;
    
    use App\Libraries\FooLib;
    use CodeIgniter\Controller;
    
    class FooController extends Controller {
    
        protected $lib;
    
        public function __construct() {
            $this->lib = new FooLib();
        }
    }
    

    如果您的 lib 文件夹位于 app 文件夹之外,请确保通过修改$psr4 变量将其添加到 app/Config/Autoload.php 中的自动加载器。

    $psr4 = [
                'App'         => APPPATH,                // To ensure filters, etc still found,
                APP_NAMESPACE => APPPATH,                // For custom namespace
                'Config'      => APPPATH . 'Config',
                'Libraries'   => APPPATH . 'Libraries'   // Your custom librairies
            ];
    

    【讨论】:

    • 谢谢,它对我来说工作正常,但我有两个问题,首先是我需要再次在视图和模型中创建库类的对象,因为现在无法使用 @ 获取视图中的库属性987654329@ 和第二个没有添加 autoload.php 它工作正常,所以为什么需要添加 autoload.php。
    • 你说得对,我猜它不需要添加到自动加载器中,因为它在应用程序文件夹中(需要确认思想)。请注意,如果您在 app 文件夹之外创建另一个文件夹,则必须添加它。是的,您必须在控制器中实例化您的库对象一次(您可以将其传递给您的视图)并在您的模型中实例化一次。
    • 正确,第一行 PSR 映射了整个 App 命名空间,其中包括 App\Libraries 的子空间
    猜你喜欢
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    相关资源
    最近更新 更多