Как один раз автоматически загрузить библиотеку codeigniter4 и получить к ней доступ в любом месте в Controller, Model, View, как в CI3 - PullRequest
0 голосов
/ 30 апреля 2020

В CI3 мы создаем пользовательскую библиотеку и автоматически загружаем ее в config / autoload. php тогда мы можем использовать ее повсюду в контроллере, модели, представлении с помощью простой $ this-> rules-> status (), где Rules библиотека в папке application / library

Но не в состоянии сделать то же самое в CI 4, есть ли альтернатива для этого

1 Ответ

2 голосов
/ 30 апреля 2020

Если вы хотите загрузить свою собственную библиотеку, вы должны полагаться на пространства имен и создавать новый объект всякий раз, когда вы хотите использовать эту библиотеку. Также обязательно проверьте файл app/Config/Autoload.php, чтобы ваш пользовательский lib был известен автозагрузчику.
Поскольку суперобъект codeigniter 3 был удален, вы не сможете получить к нему доступ везде, где захотите. Однако вы можете загрузить его в представление, контроллер и модель и сделать ваши представления, контроллеры и модели расширяющими его.

Например, библиотека с именем FooLib в app/Librairies будет иметь вид:

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();
    }
}

И обязательно добавьте его в автозагрузчик в app/Config/Autoload.php, изменив переменную $psr4, если ваша папка lib находится вне папки приложения.

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