作为Zend Framework的新手,我一直在阅读并尝试在我购买的网络和书籍上的各种教程。所有教程都做的一件事是将某些值硬编码到引导程序或其他代码中。例如,设置标题:
$这 - > _view-> headTitle( '的MySite');
我意识到这可以在application.ini文件中设置,但如果您将应用程序分发到其他站点,我认为这不合适。
我很想听听在application.ini文件中设置应用程序特定设置并加载的想法
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH.'/configs/application.ini'
);
然后在引导程序的某处,检查config.ini文件并将它们添加到当前现有的应用程序配置数组中,如果config.ini不存在,则从数据库中检索此类特定于站点的配置并编写config.ini文件(显然,如果在数据库中更改了值,则删除并重写文件)。 我不需要查看文件是如何编写的或者不是什么...只是对其他人如何处理这些事情的一般概念。或提供不同的想法吗?
在设置各种特定于站点的配置时,我宁愿最终使用类似的东西:
$this->_view->headTitle($config->site->title);
希望这是有道理的: - )
答案 0 :(得分:1)
请记住,您可以将许多配置文件传递给Zend_Application,而不仅仅是application.ini, 所以这可能是你个案中最好的。
如果您非常依赖配置,您可能会对使用您通过config.ini提供给Zend_Application的特定设置创建其他应用程序资源感兴趣。
但我敢打赌,未来,您将把这些选项存储在数据库中,并允许最终用户修改它们。
在最简单的情况下,我更喜欢解决方案:
// in the layout.phtml
$this->render('head.phtml');
...
$this->render('footer.phtml');
在网站特定的页脚和头部配置中。
快速且易于维护。
答案 1 :(得分:1)
在view_script.phtml中
$this->headTitle()->prepend($config->site_title);
麻烦在哪里?
答案 2 :(得分:1)
这取决于您在配置文件中需要什么样的数据,以及如何在不同的网站上重复使用您的应用程序。
虽然将文件名作为Zend_Application的第二个参数传递给配置文件是正常的,但您也可以传递Zend_Config对象。 Zend_Config本身可以很容易地将多个配置文件合并在一起,所以在你的public / index.php中你可以这样做:
$defaultConfigFilename = APPLICATION_PATH . '/configs/application.ini';
$siteConfigFilename = APPLICATION_PATH . '/configs/site.ini';
// Create config object, using site-specific data if available
$config = new Zend_Config_Ini($defaultConfigFilename, null, true);
if (file_exists($siteConfigFilename)) {
$siteConfig = new Zend_Config_Ini($siteConfigFilename);
$config->merge($siteConfig)
->setReadOnly();
}
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
$config
);
这将查找site.ini文件,如果存在,则将其与应用程序ini合并。然后它将正常引导应用程序。
我最近使用的另一种方法是尽可能地将application.ini保持为最小(例如只有bootstrap类名和位置),然后在我的bootstrap类中创建一个_initSite()方法来创建一个Site对象使用数据库中的数据。然后它从ini文件中读取配置数据,并将其存储在Site对象中。然后,我有一个网站资源,我可以在我的应用程序的其他地方访问,例如做$ view-> _headTitle($ site-> config-> title);就像你上面的例子一样。
我希望这会给你一些想法。 ZF非常灵活!