申し訳ありませんが、あなたが示唆していることは悪い考えです。ブートストラップは、ブートストラッパがすべきいくつかのもの
など、変数を必要な設定を初期化することによって、作業状態にライブラリを取得するためのものです:
- は「include_pathに」
- にカスタムパスを追加します(文字セットを初期化しますUTF-8)及び符号化指示(mb_internal_encoding)
- 初期ロガー(エラーまたはアプリロギング)
- 初期オートローダ
アプリケーションはコントローラレイヤーで要件を処理する必要があります。たとえば、ユーザーがexample.com/controller/action/en-USにアクセスした場合、コントローラはリクエストオブジェクト(および指定されたパラメータ)にアクセスして言語を設定し、ユーザーセッションvarを設定して現在のページと後続のページを英語で表示することができます。
- - 編集ブートストラップする通過値対仲介クラスを使用して国際化/ロケール設定を初期化するための
実装例:
// Controller
$i18n = new i18n();
$i18n->setLocale($this->getRequest()->getParameter('locale'));
// Now I can make locale specific calls to validate localized data
$i18n->validateDate($this->getRequest()->getParameter('date'));
// Can also make queries for locale specific data
$results = $i18n->getDob()->query('select * from my_table');
// i18n class
class i18n
{
protected $locale;
public function setLocale($locale)
{
$this->locale = $locale;
}
public function getLocale()
{
return $this->locale;
}
// Factory method for creating a database object based on locale
public function getDbo()
{
switch ($this->getLocale()) {
case 'en-US':
return new Zend_Db::factory('Pdo_Mysql', array(
'host' => 'hostname',
'username' => 'username',
'password' => 'password',
'dbname' => 'en_us_locale'
));
case 'en-GB':
return new Zend_Db::factory('Pdo_Mysql', array(
'host' => 'hostname',
'username' => 'username',
'password' => 'password',
'dbname' => 'en_gb_locale'
));
}
}
}
大丈夫ですが、パス、データベースなどのような私のリソースのいくつかの設定があればどうなりますか?ロケールパラメータに応じて変更されます。私はブートストラップでそれらを初期化することができません。コントローラのプラグインですべてを初期化する必要がありますか?私はこれが良いアイデアだとは思わない? –
より高いレベルのブートストラップクラスを作成することができます。要求オブジェクトを渡し、現在の値に基づいてインクルードパスとデータベース接続を初期化します。ここでのゲームの終了は、基本レベルのブートストラップに要求レベルのデータを渡すのではなく、できるだけダムにしてライブラリを初期化するだけです。 –
はい、これは良い解決策になるかもしれません。コントローラプラグインをブートストラップとして作成し、ブートストラップリソースを変更または初期化します。 –