我将 Zend Framework 1.10 用于 Web 应用程序,并且我想将 Zend_Db_Adapter(可能还有我的一些模型)用于 cli php 中的脚本,该脚本将与 cron 一起使用。您能告诉我如何根据 application.ini 中的设置创建 Zend_Db_Adapter 吗?在我需要 Zend_Db_Adapter 的应用程序模型中,我到处使用这样的东西:
$this->_db = Zend_Db_Table::getDefaultAdapter();
将它用于cli也很好。例如,我创建了一个文件 cron_job 并且 $resource 在这里为空。set_include_path(implode(PATH_SEPARATOR, array($zendPath, get_include_path(), )));
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH',
/* realpath(dirname(__FILE__) . '/../application')*/
'/var/application');
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV',
(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
: 'production'));
// Register autoloader
require_once($zendPath . '/Zend/Loader/Autoloader.php');
Zend_Loader_Autoloader::getInstance();
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$resource = $application->getBootstrap()->getPluginResource('db');
var_dump($resource);
在 application.ini 我有设置:
resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = user
resources.db.params.password = password
resources.db.params.unix_socket = "/var/run/mysqld/mysqld.sock"
resources.db.params.dbname = db_name
resources.db.isDefaultTableAdapter = true
根据我的应用程序的 application.ini 在此处创建 Zend_Db_Adapter 的最佳方法是什么,而不是为 cli 脚本创建另一个配置?我的 Web 应用程序引导程序是这样的:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
/**
* Initilize Action helper in a broker
*/
protected function _initActionHelpers()
{
Zend_Controller_Action_HelperBroker::addPrefix('Common_Helper');
}
/**
* Init plugins
*/
protected function _initPlugins()
{
$fc = Zend_Controller_Front::getInstance();
$fc->registerPlugin(new Plugin_AccessCheck());
}
/**
* Set transport for mail
*/
protected function _initEmail()
{
//parameters to send mail
$emailConfig = $this->getOption('email');
//send parameters for sending email
$transport = new Zend_Mail_Transport_Smtp($emailConfig['server'],
$emailConfig);
Zend_Mail::setDefaultTransport($transport);
//object for sending mail
$mailer = new Common_Mail();
$mailer->setFrom($emailConfig['from_address'], $emailConfig['from_name']);
//congigure and store mailer for sending email
Zend_Registry::set('mailer', $mailer);
}
}
谢谢你。