Yii PHP Framework实用入门教程(详细介绍)


Posted in PHP onJune 18, 2013

说明:因为最近工作工作关系,需要开发一个在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文件夹,文件结构如下:

Yii PHP Framework实用入门教程(详细介绍)

注:上图中demosframeworkrequirementsYii压缩包中的文件夹,其它文件和文件夹是本人使用Eclipse时创建的。此外,在D:/wwwroot/YiiDemo/framework文件夹下有一个yiic.bat文件,这个文件可以帮助我们快速生成网站架构和MVC相关的文件。

另外,在本实例中MySQLPHP都是用了utf8编码,不建议使用gb2312编码,能显示的中文字符太少,并且对其它东亚语系不支持,甚至连生僻点的繁体中文都不能显示,而utf8可以解决这个问题。

创建网站初始结构

启动Windows命令行程序(在开始菜单上找到“运行”,然后输入“cmd”并回车),可以看到如下命令行窗口:

Yii PHP Framework实用入门教程(详细介绍)

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

Yii PHP Framework实用入门教程(详细介绍)

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

Yii PHP Framework实用入门教程(详细介绍)

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

Yii PHP Framework实用入门教程(详细介绍)

按照本人机器配置,现在就可以看到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文件。如下:

Yii PHP Framework实用入门教程(详细介绍)

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

Yii PHP Framework实用入门教程(详细介绍)

使用yiic shell命令就可以进入shell命令行,在命令行看到的输入提示变为“>>”,键入model 表名就会创建对应表的model文件,上图下面就是使用“model user”成功之后就可以看到上图对应的情况。

还可以使用crud (crud分别是create/read/update/delete的缩写,表示常用的增删改查数据库操作)表名创建对应的coltrollerview文件,如下图所示:

Yii PHP Framework实用入门教程(详细介绍)

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

Yii PHP Framework实用入门教程(详细介绍)

可以看到尽管MySQLPHP都是用了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';也能正常显示了,如下图所示:
Yii PHP Framework实用入门教程(详细介绍)

好了,至此没有写一行代码,但是已经完成了一个网站的大体框架,并且能初步实现增删改查功能了。虽然采用更改全部配置的方式也可以实现显示数据库中的中文,但是不建议采用这种方式。在此非常感谢kingheaven的提示。

PHP 相关文章推荐
PHP写入WRITE编码为UTF8的文件的实现代码
Jul 07 PHP
php empty函数 使用说明
Aug 10 PHP
PHP 身份验证方面的函数
Oct 11 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
Jun 30 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
Nov 27 PHP
php获取一个变量的名字的方法
Sep 05 PHP
浅析iis7.5安装配置php环境
May 10 PHP
PHP动态生成指定大小随机图片的方法
Mar 25 PHP
php动态读取数据清除最右边距的方法
Apr 12 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
Nov 25 PHP
PHP实现文件上传后台处理脚本
Mar 04 PHP
深入array multisort排序原理的详解
Jun 18 #PHP
解析PHP工厂模式的好处
Jun 18 #PHP
PHP实现邮件群发的源码
Jun 18 #PHP
解析PHP跨站刷票的实现代码
Jun 18 #PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
Jun 18 #PHP
360通用php防护代码(使用操作详解)
Jun 18 #PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
Jun 18 #PHP
You might like
PHP小程序自动提交到自助友情连接
2009/11/24 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
python实现海螺图片的方法示例
2019/05/12 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
降低python版本的操作方法
2020/09/11 Python
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
投标保密承诺书
2014/05/19 职场文书
2014年最新学校运动会广播稿
2014/09/17 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
Python常遇到的错误和异常
2021/11/02 Python