<?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>AquarLife &#187; MVC</title>
	<atom:link href="http://www.aquarhead.com/tag/mvc/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aquarhead.com</link>
	<description>天空中的羽翼距离你还有多远 在你隐藏的感情之中寻找我的踪迹</description>
	<lastBuildDate>Wed, 01 Feb 2012 17:08:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/><cloud domain='www.aquarhead.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>CakePHP自学笔记（五）：Cake中的MVC开发</title>
		<link>http://www.aquarhead.com/2010/03/cakephp-notes-5/</link>
		<comments>http://www.aquarhead.com/2010/03/cakephp-notes-5/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 13:55:37 +0000</pubDate>
		<dc:creator>AquarHEAD</dc:creator>
				<category><![CDATA[Code Fortress]]></category>
		<category><![CDATA[AquarTutorial]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://www.aquarhead.com/?p=787</guid>
		<description><![CDATA[AquarTutorial 第一期 -CakePHP自学笔记 （一）：利用Ubuntu搭建开发环境 （二）：数据库配置与连接 （三）：MVC开发模式简介 （四）：CakePHP的命名规范 >>（五）：Cake中的MVC开发]]></description>
			<content:encoded><![CDATA[<p>AquarTutorial 第一期<br />
-CakePHP自学笔记</p>
<p><a href="http://www.aquarhead.com/2010/03/cakephp-notes-1/">（一）：利用Ubuntu搭建开发环境</a><br />
<a href="http://www.aquarhead.com/2010/03/cakephp-notes-2/">（二）：数据库配置与连接</a><br />
<a href="http://www.aquarhead.com/2010/03/cakephp-notes-3/">（三）：MVC开发模式简介</a><br />
<a href="http://www.aquarhead.com/2010/03/cakephp-notes-4/">（四）：CakePHP的命名规范</a><br />
>>（五）：Cake中的MVC开发</p>
<p><-<-<-<-<-<-<-<-<-<-<-<-<-</p>
<h3>行为、组件、助手</h3>
<p>或许你已经听过很多遍那句经典的“不要重复发明轮子”了，同样，为了提高代码重用，Cake提供了Behavior（行为）、Component（组件）、Helper（助手），分别作为Model（模型）、Controller（控制器）、View（视图）的“扩展”。说白了，就跟C的标准库一样，想使用行为、组件或助手的功能，只要声明一下就OK了。</p>
<p>我目前比较常用的核心组件是Auth（认证系统），助手有Form（表格）、Session（会话控制）、html（快速创建html标签）等。</p>
<h3>使用扩展</h3>
<p>前面说过，要使用扩展，只要在模型、控制器中声明就可以了（核心助手不用声明）。示例代码：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> ExampleController <span style="color: #000000; font-weight: bold;">extends</span> AppController <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$components</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Auth'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>在模型中使用行为与此类似。</p>
<p>有时候，像Auth认证系统这样的组件是整站都需要的，我们可以在app/app_controller.php文件中向AppController类中引入Auth，这样所有继承自AppController的控制器也都有Auth了。也就是：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> AppController <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$components</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Auth'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<h3>回调函数</h3>
<p><del datetime="2010-03-16T13:01:11+00:00">这个名词具体是什么意思我还不很明白。</del>跟某陈小讨论了一下，他给我两个网址（<a href="http://hi.baidu.com/skylin/blog/item/77a6213fddebaee555e723f2.html">CN</a>、<a href="http://www.velocityreviews.com/forums/t291572-what-is-callback-function.html">EN</a>）我还没仔细看，不过wiki上那个图片是让我懂了它为什么叫这个名字，回调的意思就是主程序调用一个库函数（级别不同），而此库函数调用了一个和主程序同样级别的函数，也即“回调”。总之呢，我现在也只用一个Callback Function就是beforeFilter()。</p>
<p>回调函数可以用来设置一些配置选项，或者在页面跳转之前执行某些动作。</p>
<p>比如我用beforeFilter来设置Auth的一些参数：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> beforeFilter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Auth</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">allow</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'login'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'add'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'view'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'index'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Auth</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">loginRedirect</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'action'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'home'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>这里beforeFilter是控制器的回调函数，它在任何函数被执行前执行。</p>

	Tags:<a href="http://www.aquarhead.com/tag/aquartutorial/" title="AquarTutorial" rel="tag">AquarTutorial</a>,<a href="http://www.aquarhead.com/tag/cakephp/" title="CakePHP" rel="tag">CakePHP</a>,<a href="http://www.aquarhead.com/tag/mvc/" title="MVC" rel="tag">MVC</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.aquarhead.com/2010/03/cakephp-notes-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP自学笔记（四）：CakePHP的命名规范</title>
		<link>http://www.aquarhead.com/2010/03/cakephp-notes-4/</link>
		<comments>http://www.aquarhead.com/2010/03/cakephp-notes-4/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 13:38:16 +0000</pubDate>
		<dc:creator>AquarHEAD</dc:creator>
				<category><![CDATA[Code Fortress]]></category>
		<category><![CDATA[AquarTutorial]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://www.aquarhead.com/?p=754</guid>
		<description><![CDATA[AquarTutorial 第一期 -CakePHP自学笔记 （一）：利用Ubuntu搭建开发环境 （二）：数据库配置与连接 （三）：MVC开发模式简介 >>（四）：CakePHP的命名规范]]></description>
			<content:encoded><![CDATA[<p>AquarTutorial 第一期<br />
-CakePHP自学笔记</p>
<p><a href="http://www.aquarhead.com/2010/03/cakephp-notes-1/">（一）：利用Ubuntu搭建开发环境</a><br />
<a href="http://www.aquarhead.com/2010/03/cakephp-notes-2/">（二）：数据库配置与连接</a><br />
<a href="http://www.aquarhead.com/2010/03/cakephp-notes-3/">（三）：MVC开发模式简介</a><br />
>>（四）：CakePHP的命名规范</p>
<p><-<-<-<-<-<-<-<-<-<-<-<-<-</p>
<h3>基本的命名规则</h3>
<p>上篇笔记中我们刚刚对MVC开发模式有了一个简单的认识，在进行开发之前，我们首先要熟悉CakePHP的一些命名规范，所谓命名规范也就是数据表、模型文件、模型、控制器文件、控制器、视图文件等的命名的一些规范，注意这是规范不是规定，即并不是必须的，但遵循默认的命名规范能大大加快开发速度，并减少不必要的麻烦。</p>
<p>比如你要给程序添加一系列关于物品(item)的功能，比如查看、购买等等，你最好：</p>
<ol>
<li>用items命名数据表；</li>
<li>用item.php命名模型文件，放在app/models目录下，用Item命名我们的模型（见下文）；</li>
<li>用items_controller.php命名控制器文件，放在app/controllers目录下，用Items命名我们的控制器</li>
<li>在app/views目录下建立items子目录</li>
</ol>
<p>注意有几处单复数的差别。</p>
<h3>示范代码</h3>
<p>终于到动手写写代码的时候了，首先打开app/models/item.php添加如下代码：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> Item <span style="color: #000000; font-weight: bold;">extends</span> AppModel<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Item'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>然后继续修改app/controllers/items_controller.php。</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> ItemsController <span style="color: #000000; font-weight: bold;">extends</span> AppController <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Items'</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>这样就完成了最基本的模型和控制器，我们所写的模型都继承AppModel类，而AppModel类又继承Model类，同样，程序中的控制器都继承AppController类，后者又继承Controller类，此处Model类和Controller类都由CakePHP的内核提供。我们可以更改AppController类，比如增加Auth组件，这样程序的所有控制器都会默认加载这个组件。</p>
<p>注意我们并没有为模型指明具体的数据表，也没有为控制器指明要使用的模型，这就是CakePHP命名规范的作用：默认情况下，单数命名的模型会自动调用复数命名的数据表（比如Item这个模型就会默认与items这个数据表交互），复数命名的控制器会自动调用单数命名的模型（所以ItemsController会默认调用Item这个模型），最后视图会自动接受控制器的相应函数返回的数据，马上就来实现一个视图。</p>
<h3>函数和视图</h3>
<p>一个控制器可能有很多函数，而每个函数都有相对应的视图，所以我们要在控制器对应的视图目录下以函数名添加视图。这里插一句CakePHP构造链接的方法，比如这个items控制器有个buy函数来实现购买功能，这时如果CakePHP的程序所在的目录是http://www.example.com/cake，那么这个buy函数对应的视图渲染的页面就是http://www.example.com/cake/items/buy，而如果我们访问http://www.example.com/cake/items，即直接访问这个控制器，Cake会默认返回index函数及其视图。</p>
<p>下面我们为Items这个控制器添加index函数，简单地返回所有items数据表中的条目。修改app/controllers/items_controller.php。</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> ItemsController <span style="color: #000000; font-weight: bold;">extends</span> AppController <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Items'</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">function</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'items'</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Item</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'all'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>这里set函数就是用来从控制器向视图传递数据的，它会以数组的形式传递数据。具体可以看<a href="http://book.cakephp.org/view/336/Creating-Post-Views">这个页面</a>。</p>
<p>然后我们创建app/views/items/index.ctp文件并添加如下内容：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&lt;h1&gt;Show Items&lt;/h1&gt;
&nbsp;
&lt;table&gt;
	&lt;tr&gt;
		&lt;th&gt;Id&lt;/th&gt;
		&lt;th&gt;Name&lt;/th&gt;
	&lt;/tr&gt;
&nbsp;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$items</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$item</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;tr&gt;
		&lt;td&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Item'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/td&gt;
		&lt;td&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Item'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/td&gt;
	&lt;/tr&gt;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endforeach</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
&lt;/table&gt;</pre></div></div>

<p>在数据表中添加一些数据（此处我们假定只展示数据表中id和name两项），然后访问http://localhost/caketest/items就能看到一个展示items数据的表格。</p>
<p>P.S.对于多词组的名字，命名规范如下：</p>
<ul>
<li>数据表名：user_profiles；</li>
<li>模型名：UserProfile，模型文件名：user_profile.php；</li>
<li>控制器名：UserProfilesController，控制器文件名：user_profiles_controller.php</li>
<li>视图文件目录：user_profiles</li>
</ul>

	Tags:<a href="http://www.aquarhead.com/tag/aquartutorial/" title="AquarTutorial" rel="tag">AquarTutorial</a>,<a href="http://www.aquarhead.com/tag/cakephp/" title="CakePHP" rel="tag">CakePHP</a>,<a href="http://www.aquarhead.com/tag/mvc/" title="MVC" rel="tag">MVC</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.aquarhead.com/2010/03/cakephp-notes-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP自学笔记（三）：MVC开发模式简介</title>
		<link>http://www.aquarhead.com/2010/03/cakephp-notes-3/</link>
		<comments>http://www.aquarhead.com/2010/03/cakephp-notes-3/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 03:38:58 +0000</pubDate>
		<dc:creator>AquarHEAD</dc:creator>
				<category><![CDATA[Code Fortress]]></category>
		<category><![CDATA[AquarTutorial]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://www.aquarhead.com/?p=750</guid>
		<description><![CDATA[AquarTutorial 第一期 -CakePHP自学笔记 （一）：利用Ubuntu搭建开发环境 （二）：数据库配置与连接 >>（三）：MVC开发模式简介]]></description>
			<content:encoded><![CDATA[<p>AquarTutorial 第一期<br />
-CakePHP自学笔记</p>
<p><a href="http://www.aquarhead.com/2010/03/cakephp-notes-1/">（一）：利用Ubuntu搭建开发环境</a><br />
<a href="http://www.aquarhead.com/2010/03/cakephp-notes-2/">（二）：数据库配置与连接</a><br />
>>（三）：MVC开发模式简介</p>
<p><-<-<-<-<-<-<-<-<-<-<-<-<-</p>
<h3>关于MVC</h3>
<p>CakePHP遵循MVC开发模式，所谓MVC也就是Model-View-Controller的首字母缩写，MVC开发模式把应用程序开发分成三个部分，Model即模型用于管理数据，View即视图用来制作用户界面，而Controller即控制器管理应用程序的逻辑。下图演示采用MVC开发的程序如何响应用户的请求：<br />
<div id="attachment_751" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.aquarhead.com/wp-content/uploads/2010/03/basic_mvc.png"><img src="http://www.aquarhead.com/wp-content/uploads/2010/03/basic_mvc-300x131.png" alt="MVC请求演示" title="MVC请求演示" width="300" height="131" class="size-medium wp-image-751" /></a><p class="wp-caption-text">MVC请求演示</p></div><br />
用户点击某个链接后，分发器会调用相应的控制器及函数，控制器会向模型请求数据，并做一些动作比如验证是否登录或者向模型写入数据，然后把需要展示的内容返回给视图，最后视图渲染网页返回给用户。</p>
<p>MVC的优点在于添加或移除系统组件很方便，可以说是一种迭代式开发，这样做成的系统扩展性很强，组件的重用性也很好。引述<a href="http://book.cakephp.org/cn/view/12/Benefits">CakePHP手册</a>:</p>
<blockquote><p>为什么要用 MVC模式 呢? 因为它是一个经过考验的真正的软件设计模型，它可以使程序成为可维护的、模块化的和快速开发的包。使用分离的模型(Model)、视图(View)和控制器(Controller)组织的程序是轻便的。新的特性很容易就被加入，旧的程序换上新的外观也是一下子的功夫。模块化和分离的设计使得开发者和设计者能够同时工作，这包括了快速 原型的能力。分离的设计令开发者可以修改应用的一部分而不会影响到其他部分。</p>
<p>如果你从来没有用过这种方法建立应用，适应它需要一些努力，但是我们相信一旦你使用CakePHP建立了你的第一个应用，你不会再想用其他方法建立你的应用了。</p></blockquote>
<h3>MVC下的快速开发</h3>
<p>一般来说，要给CakePHP程序添加新的功能需要如下几步：</p>
<ol>
<li>在数据库中新建一个数据表；</li>
<li>在app/models目录下新建一个Model文件；</li>
<li>在app/controllers目录下新建一个Controller文件；</li>
<li>在app/views目录下新建一个目录，在该目录中针对Controller中的每个函数新建一个View文件。</li>
</ol>
<p>这样就已经把全新的功能添加到了CakePHP中，当然，你可能还需要修改其他的MVC以便整合。</p>
<p>接下来说说CakePHP的一些命名规范，之后再用MVC给这个网站添加一个功能。</p>

	Tags:<a href="http://www.aquarhead.com/tag/aquartutorial/" title="AquarTutorial" rel="tag">AquarTutorial</a>,<a href="http://www.aquarhead.com/tag/cakephp/" title="CakePHP" rel="tag">CakePHP</a>,<a href="http://www.aquarhead.com/tag/mvc/" title="MVC" rel="tag">MVC</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.aquarhead.com/2010/03/cakephp-notes-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP自学笔记（二）：数据库配置与连接</title>
		<link>http://www.aquarhead.com/2010/03/cakephp-notes-2/</link>
		<comments>http://www.aquarhead.com/2010/03/cakephp-notes-2/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 15:35:28 +0000</pubDate>
		<dc:creator>AquarHEAD</dc:creator>
				<category><![CDATA[Code Fortress]]></category>
		<category><![CDATA[AquarTutorial]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.aquarhead.com/?p=736</guid>
		<description><![CDATA[AquarTutorial 第一期 -CakePHP自学笔记 （一）：利用Ubuntu搭建开发环境 >>（二）：数据库配置与连接]]></description>
			<content:encoded><![CDATA[<p>AquarTutorial 第一期<br />
-CakePHP自学笔记</p>
<p><a href="http://www.aquarhead.com/2010/03/cakephp-notes-1/">（一）：利用Ubuntu搭建开发环境</a><br />
>>（二）：数据库配置与连接</p>
<p><-<-<-<-<-<-<-<-<-<-<-<-<-</p>
<h3>建立数据库、数据表</h3>
<p>我们用phpMyAdmin管理数据库，用浏览器打开 http://localhost/phpmyadmin 用户名输入root，密码就是安装phpMyAdmin时设置的密码。</p>
<p>登录后，新建一个数据库，比如cakedb，同时注意选择字符集。建立数据库后，默认会赋予root用户全部权限。</p>
<p>打开cakedb数据库，你可以很方便地添加数据表，字段等等。</p>
<h3>连接到数据库</h3>
<p>然后我们要让Cake和刚刚建立的数据库连接起来，这项工作只需要我们更改app/config里面的一个配置文件，进入/var/www/caketest目录，你可以把这个目录添加到自己的书签里方便以后访问，在app/config/目录中新建database.php文件并用gedit打开，我们只要修改从81行（要查看行号，可以在编辑->首选项里面打开“显示行号”）开始的几行配置：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>81
82
83
84
85
86
87
88
89
90
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$default</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">'driver'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'mysql'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'persistent'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'host'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'login'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'password'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'somepassword'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'database'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'cakedb'</span><span style="color: #339933;">,</span>
                <span style="color: #0000ff;">'encoding'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'utf8'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'prefix'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>其中，login和password分别添有数据库全部权限的用户的用户名和密码，database添数据库的名称，encoding是需要手动写上去的，强制用utf8编码。改好后保存，刷新 http://localhost/caketest 页面，应该是下面这样：<br />
<div id="attachment_739" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.aquarhead.com/wp-content/uploads/2010/03/screenshot_036.png"><img src="http://www.aquarhead.com/wp-content/uploads/2010/03/screenshot_036-300x196.png" alt="Database Connected" title="Database Connected" width="300" height="196" class="size-medium wp-image-739" /></a><p class="wp-caption-text">Database Connected</p></div><br />
就表明Cake已经成功地连接了数据库。</p>
<p>P.S.注意这个页面中有提示<br />
Notice (1024): Please change the value of 'Security.salt' in app/config/core.php to a salt value specific to your application [CORE/cake/libs/debugger.php, line 549]<br />
这是要你去改app/config/core.php中的'Security.salt'值（在第151行），这个值是Cake用来算Hash时（比如验证密码等）需要用到的，为了安全一定要设置一个不容易猜到的字符串。</p>

	Tags:<a href="http://www.aquarhead.com/tag/aquartutorial/" title="AquarTutorial" rel="tag">AquarTutorial</a>,<a href="http://www.aquarhead.com/tag/cakephp/" title="CakePHP" rel="tag">CakePHP</a>,<a href="http://www.aquarhead.com/tag/mvc/" title="MVC" rel="tag">MVC</a>,<a href="http://www.aquarhead.com/tag/mysql/" title="MySQL" rel="tag">MySQL</a>,<a href="http://www.aquarhead.com/tag/phpmyadmin/" title="phpMyAdmin" rel="tag">phpMyAdmin</a>,<a href="http://www.aquarhead.com/tag/ubuntu/" title="Ubuntu" rel="tag">Ubuntu</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.aquarhead.com/2010/03/cakephp-notes-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

