如何像在 CI3 中一样自动加载 codeigniter4 库并在控制器、模型、视图中的每个位置访问它
How to autoload codeigniter4 library once and access it every where in Controller, Model, View like in CI3
在 CI3 中,我们创建自定义库并在 config/autoload.php 中自动加载它,然后我们可以通过简单的 $this 在控制器、模型、视图中的任何地方使用它->rules->status() 其中 Rules 是 application/library 文件夹
中的库
但无法在 CI 4 中做同样的事情,是否有其他可用的替代方法
如果你想加载你自己的库,你必须依赖命名空间并在你想使用这个库时创建一个新对象。还要确保检查 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 文件夹在应用程序文件夹之外,请确保通过修改$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
];
在 CI3 中,我们创建自定义库并在 config/autoload.php 中自动加载它,然后我们可以通过简单的 $this 在控制器、模型、视图中的任何地方使用它->rules->status() 其中 Rules 是 application/library 文件夹
中的库但无法在 CI 4 中做同样的事情,是否有其他可用的替代方法
如果你想加载你自己的库,你必须依赖命名空间并在你想使用这个库时创建一个新对象。还要确保检查 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 文件夹在应用程序文件夹之外,请确保通过修改$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
];