欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

yii 入门教程 有大用

shiping1 的头像
分类: CGI编程2009-11-05 07:28 29949人阅读 评论(25) 收藏 举报
说明:因为最近工作工作关系,需要开发一个在Linux下运行的Web Application,需要对现在比较流行的一些PHP框架做一个了解和评估,下面的这篇文章是笔者最近学习一个比较新的PHP Framework的一点经历和操作步骤,因为官方的手册写得比较晦涩(特别是中文的),曾经尝试遍读它那个手册再动手,读了一大半发现仍无法理解,于是干脆先下手为强了,因而也就有了下面的文章。 
 
介绍
Yii 是一个基于组件、纯OOP的、用于开发大型 Web 应用的高性能 PHP 框架。它将 Web 编程中的可重用性发挥到极致,能够显著加速开发进程。Yii适合大流量的应用,如门户、BBS、CMS及B2B系统等,功能丰富,性能优异,不过它的中文文档还不完善,并且有些命令行的操作是针对非Windows用户的,不易理解,所以制作了这篇文档。
下载地址:http://www.yiiframework.com/download/
中文文档地址:http://www.yiiframework.com/doc/guide/zh_cn
配置
下面针对本人的机器相关软件环境及路径做下说明:
Apache2.2.4+PHP5.2.5+MySQL5.1.39
在这里需要说明的是需要在设置Windows环境变量,在Path中添加PHP运行环境所在的目录(如本人在原有配置后加上”;C:/PHP”),因为使用Yii时需要PHP的运行环境。此外,在PHP版本选择时建议不要选择比较高的版本,本人是从PHP5.3.0->PHP5.2.11->PHP5.2.5一路降下来才运行成功的,建议尽量暂时不要使用PHP5.3.0、PHP5.2.11,本人在使用这两个版本过程中经常遇到一个ext目录下的dll文件不能加载的情况,当然你确认自己对PHP的配置相当熟悉的话例外。
因为在Yii中需要开启pdo和pdo_mysql,所以请确保在运行环境所使用的php.ini中取消了extension=php_mysql.dll、extension=php_pdo.dll、extension=php_pdo_mysql.dll的注释。
Apache的网站根路径为D:/wwwroot,在这个根路径下创建一个名为YiiDemo的文件夹,将从网上下载到的Yii压缩包解压之后,拷贝进D:/wwwroot/YiiDemo文件夹,文件结构如下:

 
注:上图中demos、framework、requirements是Yii压缩包中的文件夹,其它文件和文件夹是本人使用Eclipse时创建的。此外,在D:/wwwroot/YiiDemo/framework文件夹下有一个yiic.bat文件,这个文件可以帮助我们快速生成网站架构和MVC相关的文件。
另外,在本实例中MySQL和PHP都是用了utf8编码,不建议使用gb2312编码,能显示的中文字符太少,并且对其它东亚语系不支持,甚至连生僻点的繁体中文都不能显示,而utf8可以解决这个问题。
创建网站初始结构
启动Windows命令行程序(在开始菜单上找到“运行”,然后输入“cmd”并回车),可以看到如下命令行窗口:

 
在命令行方式下切换到Yii的framework目录下用以执行yiic命令(实际执行的是yiic.bat),如下:

 
看到如上图所示的信息之后,就可以使用yiic来创建网站结构了,在本例中我们在D:/wwwroot/YiiDemo/framework(注意Apache中网站根路径为D:/wwwroot)下创建网站,网站名字为study,先在D:/wwwroot/YiiDemo/framework下手动创建study这个文件夹,然后使用如下命令创建网站:yiic webapp 网站路径,如下图:

 
在输入创建网站的命令之后就会看到如上图所示的提示,键入”y”之后就会在D:/wwwroot/YiiDemo/study目录创建网站的框架结构,如下图所示:

 
按照本人机器配置,现在就可以看到Yii框架的雏形显示了,网址是:http://localhost/YiiDemo/study/index.php
生成MVC文件
按照默认配置还不能使用数据库,要想获取与数据库的练习,需要更改配置,打开D:/wwwroot/YiiDemo/study/protected/config文件夹下的main.php文件,更改components中的配置即可,’db’这一参数被注释掉了,将’db’参数设置如下:
'db'=>array(
                                                'connectionString'=>'mysql:host=localhost;dbname=study',
                                                'username'=>'root',
                                                'password'=>'jeri',
                                ),
保存之后即可连接MySQL数据库了,实际使用时要根据自己的实际情况配置。
在此将继续使用yiic这个命令行工具,通过cd切换工作路径到D:/wwwroot/YiiDemo/study这个文件夹,然后在命令行中可以创建model和view文件。如下:

 
需要注意的是,如上图所示,因为yiic.bat文件在D:/wwwroot/YiiDemo/framework文件夹下,而当前命令行的工作路径是D:/wwwroot/YiiDemo/study,所以在运行yiic时建议使用全路径。

使用yiic shell命令就可以进入shell命令行,在命令行看到的输入提示变为“>>”,键入model 表名就会创建对应表的model文件,上图下面就是使用“model user”成功之后就可以看到上图对应的情况。
还可以使用crud (crud分别是create/read/update/delete的缩写,表示常用的增删改查数据库操作)表名创建对应的coltroller和view文件,如下图所示:

 
比如针对表user、userlist等使用model和crud命令之后,我们就可以在浏览器中查看这些文件了,如查看userlist表中的数据,可以在浏览器中输入http://localhost/YiiDemo/study/index.php?r=userlist,看到如下所示的图:

 
可以看到尽管MySQL和PHP都是用了utf8编码,但是数据库中的RealName字段因为是中文数据导致不能正常显示,出现这种情况是因为采用了默认的字符集连接MySQL,在PHP中直接连接MySQL时,如果使用了utf8编码,我们会在PHP代码中做如下设置:mysql_query("set names 'utf8'");但是在Yii中没有提供这样的机会,           
我们可以在设置数据库连接字符串时指定连接数据库所使用的字符集,如下:
'db'=>array(
                                                'connectionString'=>'mysql:host=localhost;dbname=study',
                                                'username'=>'root',
                                                'password'=>'jeri',
                                                'charset'=>'utf8',//use charset as utf8
                                ),
这样就能正常显示了。当然也可以更改全局配置,那就是更改D:/wwwroot/YiiDemo/framework/db文件夹下的CDbConnection.php文件中的
public $charset;
改为public $charset='utf8';也能正常显示了,如下图所示:
好了,至此没有写一行代码,但是已经完成了一个网站的大体框架,并且能初步实现增删改查功能了。虽然采用更改全部配置的方式也可以实现显示数据库中的中文,但是不建议采用这种方式。在此非常感谢kingheaven的提示。


猜你在找
Yii-模型- criteria查找数据库方法
Yii使用技巧汇集
yii select下拉框dropdownlist
Yii framework 笔记之模板篇
jquery.ui.datepicker.js 用法
LoadModule php5_module/apache不能启动/加载失败/启动失败
[JavaScript]JS调用PHP和PHP调用JS的方法举例
linux 压缩文件的命令总结
HTML中select标签单选多选详解
今天总算搞懂了RI (Referential Integrity) 引用完整性

 



查看评论
15楼 紫色蚂蚁 2014-03-31 13:25发表 [回复]
我了个去,ASP.NET夜话不升级了?去搞PHP去了?
14楼 ch5110201 2013-06-28 13:43发表 [回复]
为什么我生成的文件都是gb2312的呢
13楼 一夜编舟 2013-04-02 15:53发表 [回复]
谢谢周爷分享经验!
正在学习中。。。!
12楼 tian_4238 2012-03-01 01:08发表 [回复]
然后看不懂,但还是来顶顶周公,俺还是一个未出世的孩子!!
Re: 周公 2012-03-01 10:32发表 [回复]
回复tian_4238:谢谢支持。
11楼 Seph 2011-02-24 16:06发表 [回复]
谢谢楼主啦~基本上和我研究的一样,但是您老人家帮我整理出来了……呵呵[e10]
10楼 xieph 2011-01-21 11:23发表 [回复]
[e08]这个在文档里面都有的啊..晕...
Re: 码无边 2011-12-27 11:47发表 [回复]
回复xieph:
引用“daresheep”的评论:very well
9楼 zhongbeizhuangzhuang 2010-10-07 11:37发表 [回复]
[e01]看不明白!
8楼 ablihui3 2010-08-20 15:39发表 [回复]
请问楼主,
我运行yiic后提示'php.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。
请问这是什么情况
Re: 周公 2010-10-06 10:29发表 [回复]
回复 ablihui3:应将php.exe所在的路径添加到系统的path环境变量中。
7楼 匿名用户 2010-06-16 12:39发表 [回复]
即将在www.sys2009.com上发布一个用Yii开发的博客程序的全部演示过程,详细说明与实例,此网站也是用Yii开发的一个简单网站,可以获取淘宝购物的还价空间
6楼 jike1lp 2010-04-22 16:38发表 [回复]
我model 表的时候出现出现程序崩溃的现象,是不是和PDO有关呢
Re: 周公 2010-04-23 08:24发表 [回复]
没有给出错误提示吗?这个东东我现在也没有用,我当时只是评估时用了一下,然后写了这篇文章。
5楼 add_wolong 2010-04-12 16:16发表 [回复]
[e01]学习了 楼主能不能把你的配置环境 发给我 我用的wamp php5.26 集成环境安装好了 但是发布文章的时候出现错误 是不是环境的问题 cgmomie@163.com 偶邮箱 先谢谢了
Re: 周公 2010-04-13 20:58发表 [回复]
我是自己安装配置,能运行phpinfo()就差不多了,再启用PDO就行了。
4楼 Bevin_chen 2010-01-19 15:53发表 [回复]
[e06] 图片显示不了!!!
Re: 周公 2010-01-20 07:11发表 [回复]
CSDN被和谐着,谁也没有办法。
3楼 daresheep 2009-12-09 07:56发表 [回复]
very well
2楼 bsdog 2009-11-05 11:46发表 [回复]
..............看文档你看一半.............
楼主忘记说明了:
功能丰富,性能优异,不过它的中文文档还不完善,并且有些命令行的操作是针对非Windows用户的
都是些啥功能啊?中文文档........期待楼主翻译一遍
并且有些命令行的操作是针对非Windows用户的
搞php你不搞linux那你搞啥?相当的汗!!!!
Re: 周公 2009-11-05 12:50发表 [回复]
这个我觉得不用“相当的汗!!!!”吧?和搞Java开发一样,很多开发人员是在Windows下搞开发,到Linux下部署?这个我觉得不奇怪,就算Linux很安全,但是Windows下用户操作确实很方便,并且我又不是单纯做PHP方面的事情,还有C#方面的呢。
1楼 kingheaven 2009-11-05 11:00发表 [回复]
我想您一定没有好好看手册, :-)

Yii提供了一个配置数据库编码的方法, 根本不需要去改动源码, 而且, 个人感觉, 使用框架, 改动源码是最最不好的一种方法.

对于数据库的编码, 只要改config下main.php就可以了, 在db这个array里, 加上'charset' => 'utf-8'即可.
Re: 周公 2009-11-05 11:22发表 [回复]
您说得很对,我接触PHP时间不长,学习Yii 的时间更短了,主要是参考中文手册来的。
普通分类: