【问题标题】:how to autoload a self made config file in codeigniter 4?如何在codeigniter 4中自动加载自制的配置文件?
【发布时间】:2018-06-06 13:00:11
【问题描述】:

我无法加载我自己的配置文件。如何自动加载或手动加载此文件?

    $psr4 = [
        'Config'                     => APPPATH.'Config',
        APP_NAMESPACE                => APPPATH,                // For custom namespace
        'App'                        => APPPATH,                // To ensure filters, etc still found,
        'Tests\Support'              => TESTPATH.'_support',    // So custom migrations can run during testing
    ];

【问题讨论】:

    标签: codeigniter autoload


    【解决方案1】:

    在文件夹 /application/Config 中创建您的配置文件,并像这样在文件 SomeConfig.php 中定义类。

    <?php namespace Config;
    
    class SomeConfig extends \CodeIgniter\Config\BaseConfig
    {
        public $foo  = 'This is foo';
        public $bar = 'This is bar';
    }
    

    你用这个“加载”类

    $someConfig = new \Config\SomeConfig();
    

    然后你将它用于:

    $fooMessage = $someConfig->foo;
    $barMessage = $someConfig->bar;
    

    我不需要对 /application/Config/Autoload.php 做任何事情

    不要将 CI v4 中的“autoloading”与“Auto-loading Resources”的 CI v3 功能混淆。它们是完全不同的东西!

    在 v4 中,“自动加载”是关于基于类 namespace 查找文件。

    在 v3 中,这是一个在框架启动时自动初始化(加载)类的功能。

    【讨论】:

    • 我有不同的情况,我需要在自定义库中加载自定义配置文件,语法是什么?是一样的吗?
    • @VipinKr.Singh 语法与我展示的相同。
    • 无法打印 $someConfig->foo;从视图
    • (自动加载配置文件并在视图中打印)-> 添加 $this->data['config'] = new \Config\HiddenConfig();然后在 BaseController 中返回 view('welcome_message',$this->data);现在打印 echo $config->foo;从视图中。
    【解决方案2】:

    @DFriend 是对的,我只是找不到与自动加载配置相关的任何内容。但是我们可以在 \App\Controllers\BaseController 的 initController 函数中添加它,如下所示:

    public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
        {
            // Do Not Edit This Line
            parent::initController($request, $response, $logger);
    
            //--------------------------------------------------------------------
            // Preload any models, libraries, etc, here.
            //--------------------------------------------------------------------
            // E.g.: $this->session = \Config\Services::session();
            $this->config = \Config\Services::YOUR_CONFIG_CLASS();
        }
    

    【讨论】:

      猜你喜欢
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      相关资源
      最近更新 更多