Cまたは他の言語を使用してPHPの世界に入った人にとっては、ドキュメントで説明されている言語の機能のいくつかの啓示がしばしばありますが、それにもかかわらず、しばしば見えなくなることがあります。
今日は、PHPでのinclude演算子の非標準(ほとんどのプログラマーの観点から)使用について説明したいと思います。
この演算子は、主な作業(プログラムに外部ファイルを含む)に加えて、関数のように動作する、つまり値を返すこともできます。
「ファイル値」を取得するには、関数のように、インクルードファイルでreturn演算子を使用するだけで十分です。 次に、そのような構造が可能になります。
a.php:
$ret = 'aaa';
return $ret;
b.php:
$b = include('a.php');
echo $b; // Displays 'aaa'
それは何のためでしょうか?
個人的な経験から、この「ツイスト」を使用するための2つの非常に実用的で実用的なオプションを見つけました。
1.ビルディングブロック。
多くのNMS関連のCMSにはXOOPSとRunCMSの両方が含まれており、Ronny CMSの新しいフォークはモジュラーブロック構造を使用しています。 このモジュールはいくつかの機能を実装し、そのコンテンツをブロックで表示し、そこからページが形成されます。
これは通常次のように行われます。 各モジュールにはブロックのリストがあり、ブロックには、含まれるファイルとコンテンツを表示する機能が指定されます。
$block[0]['file'] = 'block_file.php';
$block[0]['func'] = 'show_func';
したがって、CMS内のどこかに、
include($module . $block[0]['file']);
echo $block[0]['func']();
したがって、余分なレベルの抽象化があり、さらに恐ろしいことに、関数名の衝突の可能性があります。
インクルード演算子の機能を使用してインクルードファイルから値を返す方が合理的です。
echo include($block[0]['file']);
、コードを簡素化し、関数名が一致する危険を取り除きます。
同様のアプローチは、CMSブロックだけでなく、プログラムを機能モジュールに分離する必要がある場合にも適用できます。
2.設定で使用する
コードを説明するだけです:
config.php:
$config['host'] = 'test.com';
$config['user'] = 'test';
$config['pwd'] = 'tESt';
return $config;
test.php:
$params = include('config.php');
すべての例は条件付きであり、説明のみを目的としています。
PS以前は、このトピックはすでに取り上げられていました。たとえば、ここではhabrahabr.ru/blogs/php/39034ですが、繰り返しに問題はないと思いました。
PPSインクルードによって返される値と、プログラマーとのインタビューで使用する$$の構造についての質問です。 もちろん重要ではありませんが、使用されている言語をどれだけ深く知っているかを理解することができます。