我正在开发一个基于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取消
答案 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可能会有所帮助。