2016-10-08 4 views
1

グローバル変数$_SERVERから1つのパラメータを設定ファイル(app.php)に入れて、SERVER_NAMEにアクセスし、どの静的リソース使用するサーバー。Laravel 5.x設定ファイルのPHPスーパーグローバル変数にアクセスする最も良い方法

$staticUrlMap['local.example.com'] = 'localstatic.example.com'; 
$staticUrlMap['dev.example.com'] = 'devstatic.example.com'; 
$staticUrlMap['stage.example.com'] = 'stagestatic.example.com'; 
$staticUrlMap['preprod.example.com'] = 'preprodstatic.example.com'; 
$staticUrlMap['my.example.com'] = 'static.example.com'; 

$staticUrl = ''; 
if(!empty($_SERVER['SERVER_NAME'])) 
{ 
    $staticUrl = $staticUrlMap[$_SERVER['SERVER_NAME']]; 
} 

return [ 
    'static_url' => $staticUrl, 
]; 

laravel-configファイルに直接$_SERVERを使用するよりも、この他を達成するためのより良い方法はありますか?

+1

'$ _SERVER'を使って何が問題になったのですか?実際、私はLaravelを知らないので読みやすくなっていると思います。しかし、私はほぼ7年間PHPをコーディングしており、確かに$ _SERVERが何であるかを知っています。 P.S - 組み込みの機能性のない無意味なラッパーを使用するフレームワークは本当に嫌いです。つまり、コマンドラインからPHPを実行するとき(CLI)、メモリが私に役立つなら、サーバー名は存在しないと思う。 – ArtisticPhoenix

+0

あなたは正しい@ArtisticPhoenixですが、CLIから実行すると$ _SERVERを持たないので、私は "php artisan"コマンドを実行している間に警告が表示されないように空のチェックを行います。 私はプログラミングに入っていますが、Laravelの新人であり、専門家のアドバイスを受けて傷ついていないと思っています。 – Dharmavir

+0

それは、CLIがApacheの内部で実行されないため、サーバーが存在しないからです。はじめまして。 – ArtisticPhoenix

答えて

0

Requestファサードを使用して、$_SERVERスーパーグローバルにアクセスすることができます。意見の側の注意点として

echo Request::server('SERVER_NAME'); 

、私は一般的に基本的な機能の周りのフレームワークのラッパーの読みやすさと嫌悪感についての@ ArtisticPhoenixさんのコメントに同意します。しかし、スーパーグローバルにラッパーを使用することで、単体テストの方がずっと簡単になります。また、関連性の低い重要な点として、スーパーグローバルの直接アクセスに失敗する人気のあるスタイルガイドがあります。

関連する問題