0

Zend 1.12 に基づくプロジェクトに取り組んでいます。ハッキングを防ぐために、すべてのファイルをエンコードする必要があるという新しい要件があります。すべての.phpファイルをエンコードするioncubeエンコーダーを使用しましたが、db情報ユーザー名、パスワード、秘密鍵などを保存するapplication.iniはエンコードしません。2つのアプローチがあります。

1) application.ini ではなく、config.php などの .php ファイルに構成を配置します。

2)ioncubeがapplication.iniをエンコードする

最初のアプローチで、Zend Config Introductionを見つけまし た。ここでは、配列に構成ストアを含めることができます。これらの構成を利用できる Bootstrap.php のセットアップの具体的な例が必要です。現在、モデルはすべて Zend_Db_Table_Abstract から拡張されています。すべてのapplication.ini db構成をconfig.phpに移行すると、すべてのdb操作が機能し、フロントコントローラーにいくつかのインスタンスがあり、$this->applicationOptionsを使用することが本当に必要です。私の配置設定もこれでうまくいくことを願っています。助けてください

2番目のアプローチでは、ioncubeでapplication.iniをエンコードできる解決策があまり見つかりませんでした

これは私の設定ファイルです

return $configArray = 配列(

   'db' => array(
       'adapter' => 'pdo_mysql',
       'params'  => array(
           'host'     => 'localhost',
           'username' => 'root',
           'password' => 'root',
           'dbname'   => 'test'
       )
   )
);

Bootstrap.php でこれを行うと、動作します

   $config = new Zend_Config(require APPLICATION_PATH  .'/configs/config.php');
   $db = Zend_Db::factory($config->db->adapter,
                          $config->dv->params->toArray());
   $db = Zend_Db::factory($config->db);        
   Zend_Db_Table::setDefaultAdapter($db);

しかし、私がするとき

   protected function _initDatabase(){ 
     $config = new Zend_Config(require APPLICATION_PATH  .'/configs/config.php');
     $resource = $this->getPluginResource('db');
     var_dump($this->getPluginResource('db'));  // this will be null. 

私の質問は、resources.db.adapter、resources.db.params.host などを模倣し、pluginResources または getoptions によって取得されるように、構成で何か異なることを行う必要があるということです。

4

2 に答える 2

2

通常、ユーザーは Zend_Config_Ini や Zend_Config_Xml などのアダプター クラスのいずれかを使用することが期待されますが、構成データが PHP 配列で利用可能な場合は、シンプルなオブジェクト指向インターフェイスを利用するために、データを単に Zend_Config コンストラクターに渡すことができます。 .

基本的に、最初に構成を含む PHP ファイルを作成します。

// config.php
return array(
  ...
  ...
);

そして、別のファイルから、構成ファイルよりも使用します。

$config = new Zend_Config(require 'config.php');

Bootstrap.php で、次のような構成を取得してみてください

protected function _initDb()
{
    $resource = $bootstrap->getPluginResource('db');

    $db = $resource->getDbAdapter();

    Zend_Registry::set("db", $db);
}

Bootstrap.php に db 変数を登録すると、次のようにアクセスできます。

$dbAdapter = Zend_Registry::get("db");
于 2013-04-15T05:33:23.850 に答える
1

使用するgetPluginResource()ため、次の方法で構成キーを用意する必要があります。

resources.db.adapter = ...
resources.db.params.host = ...
...

または、config.php は次のようになります。

// config.php
return array(
  'resources' => array(
    'db' => array(
       ...
    ),
  ),
  ...
);

このページは役に立つかもしれません。

于 2013-04-16T09:38:42.737 に答える