Codeigniter4でどこからでも利用できる変数を作る


表題通り。Codeigniter3では、「get_instance()->load->vars($key, $data);」を利用することで、変数をどこからでも設定でき利用することができた。

これをCodeigniter4でも利用したい。というわけで色々調べる。get_instanceは利用できないため、Config/Appに変数を設定してそれを利用しようと思う。

参考。
Codeigniter3で使っていたアレをCodeigniter4で使う - Qiita
感謝。

Config/Appに次を追加。

public static $vars = [];

次にヘルパーを作る。セーブとロードの機能を追加する。

helper/load_helper.php
function set_vars($key, $data = null){
    if(is_int($key)) return false;
    if(is_string($key)){
        Config\App::$vars[$key] = $data;
    }elseif(is_array($key)){
        foreach($key as $k => $v) set_vars($k, $v);
    }
}

function get_var($key){
    return Config\App::$vars[$key] ?? false;
}

set_varsで変数を追加し、get_varで呼び出す。keyに変数名、dataに変数だが、keyに配列が入るとそちらを優先して変数に組み込む。

これでどこからでも呼び出せる変数をつくることができた。

他に何か良い方法があったら教えてください。