<?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/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ZEE4 &#187; programming</title>
	<atom:link href="http://zee4.com/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://zee4.com</link>
	<description>Web-designer</description>
	<lastBuildDate>Thu, 08 Jul 2010 19:18:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CakePHP database config quick-tip</title>
		<link>http://zee4.com/2010/01/cakephp-database-config-quick-tip/</link>
		<comments>http://zee4.com/2010/01/cakephp-database-config-quick-tip/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 16:53:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://zee4.com/?p=121</guid>
		<description><![CDATA[Most CakePHP programmers have seen this simple way of storing the development and production database settings in one file:



class DATABASE_CONFIG &#123;


&#160; &#160; var $prod = array&#40;


&#160; &#160; &#160; &#160; &#8230;


&#160; &#160; &#160; &#160; &#39;database&#39; =&#62; &#39;live_mysite&#39;


&#160; &#160; &#41;;


&#160;


&#160; &#160; var $test = array&#40;


&#160; &#160; &#160; &#160;&#8230;


&#160; &#160; &#160; &#160; &#39;database&#39; =&#62; &#39;local_mysite&#39;


&#160; &#160; &#41;;


&#160;


&#160; &#160;// [...]]]></description>
			<content:encoded><![CDATA[<p>Most CakePHP programmers have seen this simple way of storing the development and production database settings in one file:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">class</span> DATABASE_CONFIG <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> <span class="re1">$prod</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#39;database&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;live_mysite&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> <span class="re1">$test</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">&#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#39;database&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;local_mysite&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">// the construct function is called automatically, and chooses prod or dev.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> __construct<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//check to see if server name is set (thanks Frank)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">isset</span><span class="br0">&#40;</span><span class="re1">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#39;SERVER_NAME&#39;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">switch</span><span class="br0">&#40;</span><span class="re1">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#39;SERVER_NAME&#39;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&#39;127.0.0.1&#39;</span><span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">default</span> <span class="sy0">=</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">test</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">default</span><span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">default</span> <span class="sy0">=</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">prod</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span> <span class="co1">// we are likely baking, use our local db</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">default</span> <span class="sy0">=</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">test</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>If you haven&#8217;t, check out <a href="http://edwardawebb.com/programming/php-programming/cakephp/automatically-choose-database-connections-cakephp">Edward A. Webb&#8217;s original post from <del datetime="2010-01-11T20:45:57+00:00">1998</del> 2008</a>.</p>
<p>This same technique can be used in the bootstrap.php file for other settings that change based on the server, for instance GoogleMap keys:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span> <span class="kw3">strpos</span><span class="br0">&#40;</span> <span class="re1">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#39;HTTP_HOST&#39;</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="st0">&#39;MySite.com&#39;</span><span class="br0">&#41;</span> <span class="sy0">!==</span> <span class="kw2">false</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Configure<span class="sy0">::</span><span class="me2">write</span><span class="br0">&#40;</span><span class="st0">&#39;GMAP_KEY&#39;</span><span class="sy0">,</span> <span class="st0">&#39;ABQIAA&#8230;qcPrtZgKHQ&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Configure<span class="sy0">::</span><span class="me2">write</span><span class="br0">&#40;</span><span class="st0">&#39;GMAP_KEY&#39;</span><span class="sy0">,</span> <span class="st0">&#39;ABQIAB&#8230;e6qfWeeY8Q&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>However, when baking a model, the database file only defines two types: <strong>prog</strong> and <strong>test</strong> so you pick one and end up with a model file with a line like: </p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="re1">$useDbConfig</span> <span class="sy0">=</span> <span class="st0">&#39;test&#39;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>in your baked model that doesn&#8217;t cause any problems right up until upload it to your live server late one night and start getting errors about being unable to make a connection- guess who did that?</p>
<p>The solution is simple: just define a default</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="re1">$default</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>somewhere in the file, now when you bake cake will give you the option of using the default connection which won&#8217;t add any problem-causing $useDbConfig to your model. </p>
<p>Hope this saves someone 20 minutes <img src='http://zee4.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://zee4.com/2010/01/cakephp-database-config-quick-tip/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
