今日はCIフレームワークの使い方を勉強していて、その設定ファイルが書き方を採用していることに気づきました。以下のように:
/**
* コメント
* 以下は config.php 形式のファイルです
*/
return array(
'config1' => '何らかの値',
'config2' => '何らかの値',
);
?>
in このファイルでは、リターンが直接書かれています。この使い方は、またしても私の常識を打ち破りました。具体的にドキュメントを確認してみたところ、次のように説明されています。
return
関数内から呼び出された場合、return() ステートメントは現在の関数の実行を直ちに終了し、その引数を関数呼び出しの値として返します。 ) は、 eval() ステートメントまたはスクリプト ファイルの実行も終了します。
グローバル スコープから呼び出された場合、現在のスクリプト ファイルが include() または require() されている場合、現在のスクリプト ファイルの実行は終了します。さらに、現在のスクリプト ファイルが include() されている場合、return() が呼び出された場合は、return() に指定された値が返されます。現在のスクリプト ファイルが php.ini の auto_prepend_file または auto_append_file 設定オプションによって指定されている場合、そのスクリプト ファイルの実行は終了します。言うまでもなく、return ステートメントは関数を終了します。ここでは、eval プロセスを終了できること、また、それがインクルードされたファイル内にある場合は、戻り値を include 関数と require 関数の戻り値にすることもできることにも触れています。この方法で記述する利点は、構成アイテムの内容を 1 つのステートメントで取得できることです。
//元々はこのように書かれていました
require './config.php';
function test() {
global $config;
if ($config['a']=='b') echo 'hello';
}
//Now
function test() {
$config = require('./config.php');
if ($config['a']=='b') echo 'hello';
}
?>