0

我正在开发一个基于 Zend 1.12 的项目。有一个新要求,我们必须对所有文件进行编码以防止黑客入侵。我们使用了 ioncube 编码器,它对所有的 .php 文件进行编码,但不是在 application.ini 中存储数据库信息用户名、密码、密钥等。有两种方法:

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

2)有ioncube编码application.ini

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

使用第二种方法,我没有发现 ioncube 能够对 application.ini 进行编码的分辨率

这是我的配置文件

返回 $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 回答