BeginnerEngineerBlog
中の人
中の人

【php】laravelのconfig関数みたいな関数を作りたい

公開: 2022-12-20 17:38
更新: 2023-04-05 23:10
562
php const laravel6.x config
スクラッチでphpを書いてるとlaravelのconfig関数が恋しくなったので似たような関数を作成しました(ただ連想配列から目的のkeyの値を取るだけのものです)

こんにちは!

中の人です。

スクラッチでアプリ開発なんかすると、改めてフレームワークの便利さに気づきます。

ということでタイトル通り、laravelのconfig関数が恋しくなったのでconfig関数みたいな関数を作成してみました。

と言っても、ただ連想配列から目的のkeyの値を取るだけのもので、最初の文字列でファイル自体を取得するとかはありません。

config関数のソースにあったものをチョロっと書き換えただけのものですが自分のメモとしてと、誰かの参考のために紹介します!


仕様


  1. keyを指定してそのkeyの値を取得する
  2. 入れ子の場合、'.'(ドット)で区切る
  3. いくら入れ子が深くても対応できるようにする
  4. defaultが指定されてて、keyの値が見つからなければdefaultの値を返す
  5. defaultが指定されてなくて、keyの値が見つからなければnullを返す

実装


code

📁 hoge.php

<?php

const CONSTS = [
    'key1' => 'beginner',
    'key2' => [
        'engineer',
    ],
    'key3' => [
        'blog' => [
            '中の人',
        ],
    ],
];

function config(string $key, $default = null)
{
    $array = CONSTS;

    if (false === strpos($key, '.')) {
        return $array[$key] ?? $default;
    }
    foreach (explode('.', $key) as $segment) {
        if (array_key_exists($segment, $array)) {
            $array = $array[$segment];
        } else {
            return $default;
        }
    }
    return $array;
}

echo "\n--------------\n";
echo '1: ';
var_dump(config('key1'));
echo "\n--------------\n";
echo '2: ';
var_dump(config('key2'));
echo "\n--------------\n";
echo '3: ';
var_dump(config('key3'));
echo "\n--------------\n";
echo '4: ';
var_dump(config('key0', 'hello!'));
echo "\n--------------\n";
echo '5: ';
var_dump(config('key1', 'hey!'));
echo "\n--------------\n";
echo '6: ';
var_dump(config('key2.key2'));
echo "\n--------------\n";
echo '7: ';
var_dump(config('key2.key2', 'wow!'));
echo "\n--------------\n";
echo '8: ';
var_dump(config('key3.blog'));
echo "\n--------------\n";


実行結果

ターミナル % php hoge.php

--------------
1: string(8) "beginner"

--------------
2: array(1) {
  [0]=>
  string(8) "engineer"
}

--------------
3: array(1) {
  ["blog"]=>
  array(1) {
    [0]=>
    string(9) "中の人"
  }
}

--------------
4: string(6) "hello!"

--------------
5: string(8) "beginner"

--------------
6: NULL

--------------
7: string(4) "wow!"

--------------
8: array(1) {
  [0]=>
  string(9) "中の人"
}

--------------

終わりに


これだけの内容です(゚∀゚ )< コレダケトナ・・?

何ていうか、今までconfig関数みたいの欲しいなーとか思いながらスクラッチで開発なりしてたんですけど、毎回面倒臭くてロジックも考えず、調べもしなかったんですよね。。

で、最近ちょうどlaravel触る機会があったのでconfig関数デバッグしたら、あ、なるほど簡単じゃーんということで、いつでもコピペできるように記事として紹介しました

要するに俺のメモじゃい(゚∀゚ )< オッケー

ちなみに参考にした処理は
📁 vendor/laravel/framework/src/Illuminate/Support/Arr.php

のget関数です(laravel6.xですので別のバージョンは違うかも)

やる気ある人はファイルの指定もできる関数にカスタマイズして使用するのもいいと思います!私は面倒なのでしませんが!

ということで誰かの参考になれば幸いです!

おつかれさまでした!
0
0
0
0
通信エラーが発生しました。
【広告】
似たような記事