AquarTutorial 第一期
-CakePHP自学笔记
(一):利用Ubuntu搭建开发环境
(二):数据库配置与连接
(三):MVC开发模式简介
>>(四):CakePHP的命名规范
<-<-<-<-<-<-<-<-<-<-<-<-<-
上篇笔记中我们刚刚对MVC开发模式有了一个简单的认识,在进行开发之前,我们首先要熟悉CakePHP的一些命名规范,所谓命名规范也就是数据表、模型文件、模型、控制器文件、控制器、视图文件等的命名的一些规范,注意这是规范不是规定,即并不是必须的,但遵循默认的命名规范能大大加快开发速度,并减少不必要的麻烦。
比如你要给程序添加一系列关于物品(item)的功能,比如查看、购买等等,你最好:
注意有几处单复数的差别。
终于到动手写写代码的时候了,首先打开app/models/item.php添加如下代码:
<?php class Item extends AppModel{ var $name = 'Item'; } ?>
然后继续修改app/controllers/items_controller.php。
<?php class ItemsController extends AppController { var $name = 'Items'; ?>
这样就完成了最基本的模型和控制器,我们所写的模型都继承AppModel类,而AppModel类又继承Model类,同样,程序中的控制器都继承AppController类,后者又继承Controller类,此处Model类和Controller类都由CakePHP的内核提供。我们可以更改AppController类,比如增加Auth组件,这样程序的所有控制器都会默认加载这个组件。
注意我们并没有为模型指明具体的数据表,也没有为控制器指明要使用的模型,这就是CakePHP命名规范的作用:默认情况下,单数命名的模型会自动调用复数命名的数据表(比如Item这个模型就会默认与items这个数据表交互),复数命名的控制器会自动调用单数命名的模型(所以ItemsController会默认调用Item这个模型),最后视图会自动接受控制器的相应函数返回的数据,马上就来实现一个视图。
一个控制器可能有很多函数,而每个函数都有相对应的视图,所以我们要在控制器对应的视图目录下以函数名添加视图。这里插一句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函数及其视图。
下面我们为Items这个控制器添加index函数,简单地返回所有items数据表中的条目。修改app/controllers/items_controller.php。
<?php class ItemsController extends AppController { var $name = 'Items'; function index() { $this->set('items',$this->Item->find('all')); } ?>
这里set函数就是用来从控制器向视图传递数据的,它会以数组的形式传递数据。具体可以看这个页面。
然后我们创建app/views/items/index.ctp文件并添加如下内容:
<h1>Show Items</h1> <table> <tr> <th>Id</th> <th>Name</th> </tr> <?php foreach ($items as $item): ?> <tr> <td><?php echo $item['Item']['id']; ?></td> <td><?php echo $item['Item']['name']; ?></td> </tr> <?php endforeach; ?> </table>
在数据表中添加一些数据(此处我们假定只展示数据表中id和name两项),然后访问http://localhost/caketest/items就能看到一个展示items数据的表格。
P.S.对于多词组的名字,命名规范如下:
AquarTutorial 第一期
-CakePHP自学笔记
(一):利用Ubuntu搭建开发环境
(二):数据库配置与连接
>>(三):MVC开发模式简介
<-<-<-<-<-<-<-<-<-<-<-<-<-
CakePHP遵循MVC开发模式,所谓MVC也就是Model-View-Controller的首字母缩写,MVC开发模式把应用程序开发分成三个部分,Model即模型用于管理数据,View即视图用来制作用户界面,而Controller即控制器管理应用程序的逻辑。下图演示采用MVC开发的程序如何响应用户的请求:
MVC的优点在于添加或移除系统组件很方便,可以说是一种迭代式开发,这样做成的系统扩展性很强,组件的重用性也很好。引述CakePHP手册:
为什么要用 MVC模式 呢? 因为它是一个经过考验的真正的软件设计模型,它可以使程序成为可维护的、模块化的和快速开发的包。使用分离的模型(Model)、视图(View)和控制器(Controller)组织的程序是轻便的。新的特性很容易就被加入,旧的程序换上新的外观也是一下子的功夫。模块化和分离的设计使得开发者和设计者能够同时工作,这包括了快速 原型的能力。分离的设计令开发者可以修改应用的一部分而不会影响到其他部分。
如果你从来没有用过这种方法建立应用,适应它需要一些努力,但是我们相信一旦你使用CakePHP建立了你的第一个应用,你不会再想用其他方法建立你的应用了。
一般来说,要给CakePHP程序添加新的功能需要如下几步:
这样就已经把全新的功能添加到了CakePHP中,当然,你可能还需要修改其他的MVC以便整合。
接下来说说CakePHP的一些命名规范,之后再用MVC给这个网站添加一个功能。
AquarTutorial 第一期
-CakePHP自学笔记
(一):利用Ubuntu搭建开发环境
>>(二):数据库配置与连接
<-<-<-<-<-<-<-<-<-<-<-<-<-
我们用phpMyAdmin管理数据库,用浏览器打开 http://localhost/phpmyadmin 用户名输入root,密码就是安装phpMyAdmin时设置的密码。
登录后,新建一个数据库,比如cakedb,同时注意选择字符集。建立数据库后,默认会赋予root用户全部权限。
打开cakedb数据库,你可以很方便地添加数据表,字段等等。
然后我们要让Cake和刚刚建立的数据库连接起来,这项工作只需要我们更改app/config里面的一个配置文件,进入/var/www/caketest目录,你可以把这个目录添加到自己的书签里方便以后访问,用gedit打开app/config/里面的database.php文件,我们只要修改从81行(要查看行号,可以在编辑->首选项里面打开“显示行号”)开始的几行配置:
81 82 83 84 85 86 87 88 89 90 | var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'root', 'password' => 'somepassword', 'database' => 'cakedb', 'encoding' => 'utf8', 'prefix' => '', ); |
其中,login和password分别添有数据库全部权限的用户的用户名和密码,database添数据库的名称,encoding是需要手动写上去的,强制用utf8编码。改好后保存,刷新 http://localhost/caketest 页面,应该是下面这样:
P.S.注意这个页面中有提示
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]
这是要你去改app/config/core.php中的’Security.salt’值(在第151行),这个值是Cake用来算Hash时(比如验证密码等)需要用到的,为了安全一定要设置一个不容易猜到的字符串。
AquarTutorial 第一期
-CakePHP自学笔记
>>(一):利用Ubuntu搭建开发环境
<-<-<-<-<-<-<-<-<-<-<-<-<-
首先,到Ubuntu官方网站下载最新版的Ubuntu Desktop LiveCD,如果速度慢也可以到网易或者搜狐的开源镜像站点去下载。然后把镜像刻录到一张空的CD盘上面。
[Choice 1]你可以直接在Windows里面安装一个Ubuntu系统,优点:安装卸载方便,缺点:速度稍慢。推荐没用过Linux的同学用这种方法装。
[Choice 2]重启电脑,从光驱引导,安装Ubuntu系统,优点:完全释放系统资源,缺点:不适合新手。
安装完系统后,可以调整一些设置,详细的教程以后再写。
现在开始安装LAMP服务器,所谓LAMP Server也就是Linux操作系统+Apache服务器+MySQL数据库+PHP(以前也指Perl,现在貌似都是PHP了),在Ubuntu中安装LAMP简单至极,这也是选择Ubuntu进行开发的一个原因。
首先,你需要打开一个终端,即应用程序->附件->终端(英文系统里是Application->Accessories->Terminal),也就是所谓的壳(Shell)。然后输入下面的命令:
sudo -i
然后输入你登录时的密码,按回车应该出现root@的字样就说明你已经获得了根用户(root)的权限,在这种模式下你可以安装软件、更新系统、调整系统级的配置等等,下面我们开始安装LAMP服务器,执行:
tasksel
会出现一个蓝色的页面,用上下箭头改变高亮条的位置,调整到LAMP Server的选项上面按空格,然后按Tab键切换到OK按钮上按回车,这样Ubuntu系统就会自动安装包括Apache,MySQL和PHP等一系列程序,安装时MySQL会让你设置管理员(也叫root)密码,还有一次是确认密码,这个密码要记牢,管理数据库时要用到。
此时我们的服务器已经安装完成。你可以用任意浏览器访问 http://localhost 这个网址如果出现一个It works!样子的网站就说明一切OK了。附图演示:
接下来,我们安装phpMyAdmin这个MySQL数据库管理软件,有了它你就可以很方便地管理数据库,继续在终端里执行:
apt-get install phpmyadmin
安装时会有配置选项,用空格选择apache2然后按Tab点OK,装完后会询问是否允许建立数据库,选Yes并输入数据库管理员的密码,随后会设置phpMyAdmin的密码,这个也要记住。
最后,我们需要修改Apache的一些配置以便让Cake能正常运行,继续执行(每次一行,第二条命令中可以使用Tab键自动补齐功能):
a2enmod rewrite gedit /etc/apache2/sites-enabled/000-default
会打开一个文字编辑器,把
重启Apache服务器,加载新配置:
/etc/init.d/apache2 restart
P.S.不要退出终端
下面开始部署CakePHP的开发环境,首先到Cake的官方网站下载其代码,这份笔记基于1.2.6版本,写这份笔记的时候下载地址是这个。
下载后解压到桌面,重命名一下,下面以caketest为例继续,回到我们的终端,执行:
cp -R /home/你的用户名/Desktop/caketest /var/www chmod 777 -R /var/www
这样我们已经完成了CakePHP开发模式的部署,注意不要改动caketest目录下cake里面的文件,那里是CakePHP的核心文件。我们的第一个Cake程序将在app子目录下面开始。
用浏览器打开 http://localhost/caketest 或者你起的随便什么名字(比如diablo)。应该看到下面这样的网页。
现在你可以用两次exit命令退出终端了。
http://book.cakephp.org/view/333/A-Note-on-mod_rewrite
像这里一条Comment就抵过整页教程了。。。
1 – on ubuntu gutsy/hardy
i used this command to enable mod_rewrite
$sudo a2enmod rewrite
then i modified this file
vi /etc/apache2/sites-enabled/000-default
and modified to be AllowOverride All on /var/www dir
初六就又开学了,我去把课本什么的取回来,顺便跟马丽娜和伟哥聊了几句,伟哥让我把五次调研考试的成绩单改成每个人的个人成绩分析,昨晚和今天上午就去研究怎么用Python操作Excel了(其实上次和海龙研究了怎么用Java操作,不过看完Python的代码之后就发誓坚决不用Java了。。。)
直接Google返回这个网站,很好很强大,也可以直接下载我把3个Package和那个Tutorial打包在一起的文件。
各种解压之后安装,再来几个import就可以很爽地用Python操作.xls文件了。
我还没拿到具体的成绩单,不过我暂时做了个测试用的小程序,把代码贴过来围观一下Python的强大。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | # coding=utf-8 from xlrd import * from xlwt import * from tempfile import * import glob names = [] outfiles = [] now_row = 1 def find_ouf(now_name): if names.count(now_name) == 0: names.append(now_name) temp_ouf = Workbook() outfiles.append(temp_ouf) outfiles[len(outfiles)-1].add_sheet('Analysis') temp_ous = outfiles[len(outfiles)-1].get_sheet(0) temp_ous.write(0,0,now_name) temp_ous.write(1,1,u'数学') temp_ous.write(1,2,u'语文') temp_ous.write(1,3,u'英语') temp_ous.write(1,4,u'物理/理综') temp_ous.write(1,5,u'化学') temp_ous.write(1,6,u'生物') return outfiles[names.index(now_name)] infiles = glob.glob('*.xls') for num_inf in range(len(infiles)): now_inf = open_workbook(infiles[num_inf]) now_ins = now_inf.sheet_by_index(0) now_row += 1 for row in range(2,now_ins.nrows): now_name = unicode(now_ins.cell(row,1).value) now_ouf = find_ouf(now_name) now_ous = now_ouf.get_sheet(0) now_ous.write(now_row,0,now_ins.cell(0,0).value) for each in range(len(outfiles)): outfiles[each].save(names[each]+'.xls') outfiles[each].save(TemporaryFile()) |
命运是一场神秘的游戏,让你的朋友难以自拔。这是一个不可确定,又无法挽回的游戏,从出生以来,我们的每一次呼吸都是冒险,不知命运是否会让我们如愿,安抚我们的忧虑,抚慰我们的幻影和梦。它是如此迷惑和神奇,能让我们忘记忧惧。日复一日,我们如钟表般一格格前进,选择或丢弃幸运或不幸运的数字,但是到最后,我们为了避免掉进命运的陷阱所付出的努力,都像我们面对死亡时的眼泪一样无力。
虚无
宇宙
星辰
太阳
生命
玫瑰
聪慧
衔尾蛇
这是关于人类智慧的故事!这也是石头、点金石、秘密的钥匙和发现并隐藏它的学者组织的故事!这些词归结了几百万年来的奥秘:虚无中衍生宇宙。它布满星辰,其中包括了太阳,繁衍出象征生命的玫瑰——地球上最美丽的花朵。人类得以赞赏它的美丽,多亏了自身的聪慧,而这份智慧则由创立衔尾蛇组织的学者传下来。
如果你穿过曲折的道路,轻信的人,
你将打开没有尸体的地下墓室,
其中沉睡着历史。
前往讯息的城市,
要求和不存在的人见面,
这样你能听见黑暗的声音。
跟随符号的路程,
寻找密封的房间,
在那里,时间关乎生死。
你只能在进入长生不死时,
才能见到无形的道路。
它将带你到伊普萨岛,
那儿住着奇幻的生物和怪兽。
对抗恶魔,
你将在它脚下,找到最后几句话。
然后穿过通道之柱,
进入迷宫。
在那里撒下种子,
你将看到花开。