Zend framework 如何在Zend Framework中设置站点特定配置与应用程序配置?

Zend framework 如何在Zend Framework中设置站点特定配置与应用程序配置?,zend-framework,Zend Framework,作为Zend Framework的新手,我一直在网上阅读和试用各种教程以及我购买的书籍。所有教程所做的一件事是将某些值硬编码到引导程序或其他代码中。例如,设置标题: $this->_view->headTitle('MySite') 我意识到这可以在application.ini文件中设置,但是如果您将应用程序分发到其他站点,我认为这也不合适 我想听听在application.ini文件中设置并加载应用程序特定设置的想法: $application = new Zend_Application(

作为Zend Framework的新手,我一直在网上阅读和试用各种教程以及我购买的书籍。所有教程所做的一件事是将某些值硬编码到引导程序或其他代码中。例如,设置标题:

$this->_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);

希望这有意义:-)

记住,您可以将许多配置文件传递给Zend_应用程序,而不仅仅是Application.ini, 所以这对你来说可能是最好的

如果您严重依赖配置,您可能会对使用通过config.ini向Zend_应用程序提供的特定设置创建其他应用程序资源感兴趣

但我敢打赌,将来,您将在数据库中存储这些选项,并允许最终用户修改它们

在最简单的情况下,我更喜欢以下解决方案:

// in the layout.phtml
$this->render('head.phtml');
...
$this->render('footer.phtml');
以及特定于站点的页脚和页眉配置


快速且易于维护。

请记住,您可以将许多配置文件传递给Zend_应用程序,而不仅仅是Application.ini, 所以这对你来说可能是最好的

如果您严重依赖配置,您可能会对使用通过config.ini向Zend_应用程序提供的特定设置创建其他应用程序资源感兴趣

但我敢打赌,将来,您将在数据库中存储这些选项,并允许最终用户修改它们

在最简单的情况下,我更喜欢以下解决方案:

// in the layout.phtml
$this->render('head.phtml');
...
$this->render('footer.phtml');
以及特定于站点的页脚和页眉配置

快速且易于维护。

在view\u script.phtml中

$this->headTitle()->prepend($config->site_title);
问题出在哪里?

在view\u script.phtml中

$this->headTitle()->prepend($config->site_title);

问题出在哪里?

这在一定程度上取决于配置文件中需要什么样的数据,以及在不同站点上如何重用应用程序

虽然将文件名作为第二个参数传递给Zend_应用程序是正常的,但也可以传递Zend_配置对象。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尽可能保持最小(例如,仅引导类名称和位置),然后在引导类中使用_initSite()方法,该方法使用数据库中的数据创建站点对象。然后,它从ini文件中读取配置数据,并将其存储在站点对象中。然后我就有了一个站点资源,我可以在我的应用程序中的其他地方访问它,例如执行$view->u headTitle($site->config->title);就像上面的例子一样


我希望这能给你一些想法。ZF非常灵活

这在一定程度上取决于配置文件中需要的数据类型,以及在不同站点上如何重用应用程序

虽然将文件名作为第二个参数传递给Zend_应用程序是正常的,但也可以传递Zend_配置对象。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尽可能保持最小(例如,仅引导类名称和位置),然后在引导类中使用_initSite()方法,该方法使用数据库中的数据创建站点对象。然后,它从ini文件中读取配置数据,并将其存储在站点对象中。然后我就有了一个站点资源,我可以在我的应用程序中的其他地方访问它,例如执行$view->u headTitle($site->config->title);就像上面的例子一样


我希望这能给你一些想法。ZF非常灵活

啊,问题是?啊,问题是?你答案的第二部分似乎就是我要找的。我考虑在引导程序中使用一个_init函数来检查配置文件是否存在,如果不存在,则访问数据库并构建文件。我认为这是我将进一步探索的方法。谢谢。你回答的第二部分似乎就是我要找的。我考虑在引导程序中使用一个_init函数来检查配置文件是否存在,如果不存在,则访问数据库并构建文件。我认为这是我将进一步探索的方法。谢谢