2

私はslimphpフレームワークを使用していますが、ルーティング関数の可変スコープについて混乱しています。私は次のものを持っています:

$app = new \Slim\Slim(array(
 'templates.path' => '../templates/',
 'view' => new Slim\Extras\Views\Twig()
));

$user = SES\Session::getInstance();

include 'routes.php';

$app->run();

//Routes.php

$app->get("/", function() use ($app, $user){
....
}

Routes.phpトップに追加しないと失敗しますglobal $user;

Notice: Undefined variable: user

$appこのファイルから変数にアクセスできるのに、変数にアクセスできないのはなぜ$userですか?

4

1 に答える 1

1

問題を絞り込みました。私は実際にはinclude'routes.php'を呼び出しません。フォルダ内のすべてのルートをロードするユーティリティ関数があります。ブートストラップでこれを呼び出します:SES \ Util :: loadRoutes('../routes'); これは、dirを読み取り、require$filenameを実行する静的関数です。すべてのファイルに対して。この関数内でグローバル$appを宣言しているので、過去にこれに対処した必要があります。Sooo ..いつグローバルに電話する必要があるのか​​まだ完全にはわかりませんが、これで混乱の一部が解決します。

于 2013-02-23T02:45:48.367 に答える