これはおそらく基本的なものですが、私は熟練した開発者ではありません。PHPのクラスのグローバルインスタンス
私の質問は:私はどのように関数呼び出しの外でそれを初期化することができますが、それでも内部で使用できるように、 "グローバル" PHPでクラスを取得できますか?
この例は、私が達成したいものを示しているが、明らかに動作しません:
$view = new Smarty();
$view->debugging = false;
$view->caching = false;
$view->cache_lifetime = 1;
$view->setTemplateDir('../views/');
$app->get('/register', function (Request $request, Response $response) {
$param = $request->getParams();
$view->assign('name', $param["name"]);
$response = $view->display('index.html');
return $response;
});
を、それは私が$ APP-以内にそれを定義する必要が動作するように取得するには>を呼び出します。もちろん、$ app-> get呼び出しの中で$ view-> debuggingなども設定しなければなりません。
この目的は、すべての呼び出しで$ viewの新しいインスタンスを初期化し、デフォルト設定をグローバルにする必要を回避することです。
編集: 多分私はここで質問していたかもしれません。 Googleの検索後、私は解決策を見つけるかもしれないと思う。しかし、関数内で "global $ view"を使用すると、クラスのインスタンスにアクセスできます。これは "public $ variable = new class.function()"を設定した他の言語とは異なりますが、おそらくそれが理由であり、これがセキュリティ/パフォーマンスなどの面でどのような利点があるかは間違いありません。何か別の方法がありますか?プロ/コンサは何ですか?クロージャのスコープ内の変数を変更できるようにするには、参照することにより、使用(すなわちuse (&$view)
)を呼び出すことができます
$app->get('/register', function (Request $request, Response $response)
use ($view) {
// ... code ... $view is defined here
}
: