laravel

Laravelにグローバル関数を追加しようぞ。お手軽discordエラー通知

グローバル関数が使いたい

たまに、グローバル関数がLaravelで使いたくなる。というか、個人の小さなサービスくらいなら、繰り返し使う関数は、グローバルで済ましたくなっちゃう。

vendorとかをいじくると、環境変える度に消えてしまったり、深く探すのが大変だったりする。
だから、もうこれでいいや。

ファイルを作る。

僕は app/Http/helper.php にした

helper.php
<?php 

define('WEBHOOK','https://discordapp.com/api/webhooks/406852731390925824/BPttDSYrwVf8hub38BBs6velFp6e0sc6Hn8vntEXNz_QrFX_NrmfpKmGhPsJfffLh4Xm');

define('HOOKNAME','HOOK')

function postToDiscord($error)
{
    $content = "[where]:".$error->getFile()."\n";
    $content .= "[when]:".date("Y/m/d H:i:s")."\n";
    $content .= "[state]:".$error->getMessage()."\n";

    $data = array("content" => $content, "username" => HOOKNAME);
    $curl = curl_init(WEBHOOK);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    return curl_exec($curl);
}
?>

これで

postToDiscord($e);

みたいな感じで、エラーを投げれば、もろもろ便利だ!
スクリーンショット 2018-01-28 2.16.29.png

composer.json 編集

composer.jsonのautoloadプロパティに以下のように追加

composer.json
{
"autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files":["app/Http/helper.php"]
    },
}

composer dump autoload

laravelのプロジェクトのルートディレクトリで

composer dump-autoload

これで使える。

好きな時に呼ぼう

postToDiscord($e);