<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
<channel>
<title>成刚网志 &amp;amp;&amp;amp; CBolg Application</title>
<link>http://www.chenggang.net</link>
<description><![CDATA[记录我的网事历程，架起沟通的桥梁！欢迎留言！
]]></description>
<lastBuildDate>Sun, 20 May 2012 22:43:39 +0800</lastBuildDate>
<copyright>Copyright &amp;copy; 2012 by CBolg Application.</copyright>
<language>zh-cn</language>
<pubDate>Mon, 21 May 2012 15:01:37 +0800</pubDate>
<item>
<title>Zend Application之application.ini配置，基于多模板、多module的（1.8以上）</title>
<summary><![CDATA[在Zend Framework1.8以后加入的Zend_Application，可以说 Zend_Application 和其引入的 Bootstrap 及 Resource 概念，大大简化了应用程序的初始化组装过程。<br /><br />下面主要说下Bootstrap.php及application.ini的配置。<br />]]></summary>
<description><![CDATA[<p>
	在Zend Framework1.8以后加入的Zend_Application，可以说 Zend_Application 和其引入的 Bootstrap 及 Resource 概念，大大简化了应用程序的初始化组装过程。<br />
	<br />
	下面主要说下Bootstrap.php及application.ini的配置。<br />
	<a name="readmore"></a><br />
	1.Bootstrap<br />
	class Bootstrap extends Zend_Application_Bootstrap_Bootstrap中主要做些初始化的工作，以_init开头的function都会在加载的过程中被运行。举例如下：<br />
	class Bootstrap extends Zend_Application_Bootstrap_Bootstrap<br />
	{<br />
	protected function _initConfig()<br />
	{<br />
	$config = new Zend_Config($this-&gt;getOptions());<br />
	Zend_Registry::set(&#39;config&#39;, $config);<br />
	return $config;<br />
	}<br />
	<br />
	protected function _initView()<br />
	{<br />
	//Different view implementation<br />
	$extraParams = $this-&gt;getOption(&#39;smarty&#39;);<br />
	$view = new Custom_View_Smarty($extraParams);<br />
	$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);<br />
	$viewRenderer-&gt;setViewSuffix(&#39;html&#39;);<br />
	Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);<br />
	}<br />
	<br />
	public function _initDoctrine()<br />
	{<br />
	require_once &#39;Doctrine.php&#39;;<br />
	$loader = Zend_Loader_Autoloader::getInstance();<br />
	$loader-&gt;pushAutoloader(array(&#39;Doctrine&#39;, &#39;autoload&#39;));<br />
	<br />
	$doctrineConfig = $this-&gt;getOption(&#39;doctrine&#39;);<br />
	$connectionString = $this-&gt;getOption(&#39;resources&#39;);<br />
	<br />
	$dsn = new PDO(&#39;mysql:dbname=&#39; . $connectionString[&#39;db&#39;][&#39;params&#39;][&#39;dbname&#39;] .<br />
	&#39;;host=&#39; . $connectionString[&#39;db&#39;][&#39;params&#39;][&#39;host&#39;],<br />
	$connectionString[&#39;db&#39;][&#39;params&#39;][&#39;username&#39;],<br />
	$connectionString[&#39;db&#39;][&#39;params&#39;][&#39;password&#39;]);<br />
	<br />
	$manager = Doctrine_Manager::getInstance();<br />
	$manager-&gt;setAttribute(<br />
	Doctrine::ATTR_MODEL_LOADING,<br />
	Doctrine::MODEL_LOADING_CONSERVATIVE);<br />
	<br />
	// Add models and generated base classes to Doctrine autoloader<br />
	Doctrine::loadModels($doctrineConfig[&#39;models_path&#39;]);<br />
	<br />
	$manager-&gt;openConnection($dsn);<br />
	<br />
	return $manager;<br />
	}<br />
	}<br />
	<br />
	主要是做一些初始化的工作。<br />
	<br />
	2、application.ini<br />
	application.ini主要是配置Zend_Application_Resource的参数。<br />
	Zend_Application_Resource是 Zend Framework 针对 php 这种 web 开发语言的特性而加入的。它所阐述的思想是：<strong>按需加载 (Loaded On Demand)</strong> 。因为 php 每次解析都是资源循环的完整过程，这使得如何将每次php解析的代码量减至最低，就成了优化php应用程序的重要一环，也是众多框架在开发过程中的重点问题之一。</p>
<p>
	目前 Zend Framework 1.8 提供的默认资源总共10个：</p>
<p>
	&nbsp;</p>
<p>
	1. Zend_Application_Resource_Db</p>
<p>
	2. Zend_Application_Resource_Frontcontroller</p>
<p>
	3. Zend_Application_Resource_Layout</p>
<p>
	4. Zend_Application_Resource_Locale</p>
<p>
	5. Zend_Application_Resource_Modules</p>
<p>
	6. Zend_Application_Resource_Navigation</p>
<p>
	7. Zend_Application_Resource_Router</p>
<p>
	8. Zend_Application_Resource_Session</p>
<p>
	9. Zend_Application_Resource_Translate</p>
<p>
	10. Zend_Application_Resource_View<br />
	<br />
	在application.ini中配置的参数，会自动加载到resource中，自动完成初始化的过程。我的配置如下：<br />
	[production]<br />
	includePaths.library = APPLICATION_PATH &quot;/../libs&quot;<br />
	appnamespace = &quot;Application&quot;</p>
<p>
	;=========== 类自动加载的前缀<br />
	autoloadernamespaces.0 = &quot;Zend_&quot;<br />
	autoloadernamespaces.1 = &quot;Custom_&quot;</p>
<p>
	;=========== php ini配置<br />
	phpsettings.date.timezone = &quot;Asia/Shanghai&quot;<br />
	phpSettings.display_startup_errors = 1<br />
	phpSettings.display_errors = 1<br />
	phpsettings.error_reporting = 8191</p>
<p>
	;=========== bootstrap类的路径及类名<br />
	bootstrap.path = APPLICATION_PATH &quot;/Bootstrap.php&quot;<br />
	bootstrap.class = &quot;Bootstrap&quot;</p>
<p>
	;=========== front controller配置<br />
	resources.frontController.moduleDirectory = APPLICATION_PATH &quot;/modules/&quot;<br />
	resources.frontController.moduleControllerDirectoryName = &quot;controllers&quot;<br />
	resources.frontController.defaultModule = &quot;default&quot;<br />
	resources.frontController.defaultControllerName = &quot;index&quot;<br />
	resources.frontController.defaultAction = &quot;index&quot;<br />
	resources.frontController.baseUrl = &quot;/www&quot;<br />
	resources.frontController.noErrorHandler = 1<br />
	resources.frontController.throwExceptions = 1</p>
<p>
	;============网站模块(不同模块对应不同layout,与不同的ViewHelper)<br />
	resources.view.params.default.basePath = APPLICATION_PATH &quot;/modules/default/views/&quot;<br />
	;resources.view.params.default.helperPath = &quot;Custom/View/Helper/Default/&quot;<br />
	;resources.view.params.default.layout = &quot;default&quot;<br />
	;resources.view.params.default.layoutPath = APPLICATION_PATH &quot;/modules/default/views/layouts&quot;</p>
<p>
	;=========== 数据库配置<br />
	resources.db.adapter = &quot;pdo_mysql&quot;<br />
	resources.db.params.host = &quot;localhost&quot;<br />
	resources.db.params.username = &quot;test&quot;<br />
	resources.db.params.password = &quot;123456&quot;<br />
	resources.db.params.dbname = &quot;test&quot;<br />
	resources.db.params.prefix = &quot;tt_&quot;<br />
	resources.db.isDefaultTableAdapter = true<br />
	resources.db.params.driver_options.1002 = &quot;SET NAMES UTF8;&quot;</p>
<p>
	;============smarty<br />
	smarty.left_delimiter = &quot;&lt;{&quot;<br />
	smarty.right_delimiter = &quot;}&gt;&quot;<br />
	smarty.caching = 0</p>
<p>
	;============网站生成Cache配置<br />
	cache.type = file<br />
	cache.dir = APPLICATION_PATH &quot;/cache/&quot;<br />
	cache.pagedir = APPLICATION_PATH &quot;/cache/page/&quot;<br />
	cache.lifetime = 7200<br />
	cache.automatic_serialization = TRUE</p>
<p>
	;=================== doctrine ===========<br />
	doctrine.data_fixtures_path = APPLICATION_PATH &quot;/doctrine/data/fixtures&quot;<br />
	doctrine.models_path = APPLICATION_PATH &quot;/models&quot;<br />
	doctrine.migrations_path = APPLICATION_PATH &quot;/doctrine/migrations&quot;<br />
	doctrine.sql_path = APPLICATION_PATH &quot;/doctrine/data/sql&quot;<br />
	doctrine.yaml_schema_path = APPLICATION_PATH &quot;/doctrine/schema&quot;<br />
	<br />
	<br />
	参考：<br />
	1、<a href="http://www.oophp.cn/article/view/id/368">http://www.oophp.cn/article/view/id/368</a><br />
	2、<a href="http://kbs.kimbs.cn/blog/list/post/8/title/building-multi-modules-and-multi-templates-application-using-Zend_Application">http://kbs.kimbs.cn/blog/list/post/8/title/building-multi-modules-and-multi-templates-application-using-Zend_Application</a></p>
]]></description>
<link>http://www.chenggang.net/posts/96</link>
<pubDate>Thu, 06 May 2010 15:10:15 +0800</pubDate>
<author>小豆</author>
<category>Framework</category>
<guid isPermaLink="true">http://www.chenggang.nethttp://www.chenggang.net/posts/96</guid>
</item>
</channel></rss>
