PHP でよく使用するパターンは、いくつかのグローバル ( 、 、 など) を設定し、$page
それら$user
の$db
グローバルを使用するファイルをインクルードすることです。ただし、これにグローバルを使用するという考えは好きではなかったので、より良い方法を探しています。
明らかな解決策は、サブファイルでクラスまたは関数を定義し、ファイルがインクルードされた後に呼び出すことです。ただし、次のように機能しない場合があります。
// Add entries to a URI table from each section of the site
global $router;
$router = new VirtualFileSystem();
$sections = array('store', 'forum', 'blog');
foreach($sections as $section)
include dirname(__FILE__) . $section . '/routing.php';
// Example contents of 'forum/routing.php'
// implicitly receive $router from caller
$router->add('fourm/topic/', 'topic.php');
$router->add('forum/topic/new/', 'new_topic.php');
// etc
それぞれを関数にラップrouting.php
して、それぞれを引数として呼び出そう$router
とすると、同じ関数名が複数のファイルで定義された後に衝突します。
私はアイデアがありません。グローバル名前空間を汚染することなく、インクルードされたファイルに変数を渡すより良い方法はありますか?