在Zend而不是application.ini中,我可以将我的配置存储在php文件中,如config.php

时间:2013-04-15 05:14:54

标签: php zend-framework encoding encode ioncube

我正在开发一个基于Zend 1.12的项目。我们需要对所有文件进行编码以防止黑客攻击。我们使用了编码所有.php文件但不存在application.ini的ioncube编码器,它存储了db信息的用户名,密码,密钥等。有两种方法:

1)配置驻留在.php文件中,例如config.php而不是application.ini

2)使用ioncube编码application.ini

使用第一种方法,我发现Zend Config Introduction您可以在数组中配置存储。我需要一个在Bootstrap.php中设置的具体示例,它可以利用这些配置。现在我们所有的模型都延伸自Zend_Db_Table_Abstract。我真的想要当我将所有application.ini数据库配置迁移到config.php时,所有数据库操作都有效,并且前端控制器中有多个实例使用$ this-> applicationOptions。我希望我的推杆配置也能正常工作。请帮忙

采用第二种方法,我没有发现很多关于ioncube的分辨率能够编码application.ini

这是我的配置文件

  

返回$ configArray = array(

     
   '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取消

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分:1)

您使用getPluginResource()因此您需要以下列方式获取配置密钥:

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

或者您的config.php应如下所示:

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

page可能会有所帮助。