文档章节

【翻译】Yii2 第1章 开始

zcgly
 zcgly
发布于 2015/09/15 10:10
字数 2606
阅读 966
收藏 17

让我们看看,怎样以最小的代价使用Yii2创建一个站点。目的是学习使用Yii2应用模版的安装过程,并开始体验模版里提供的一系列特性。

一个基本应用

开始使用Yii2最基本和直接的方式,是使用Yii2团队发布在GitHub上的模版文件(https://github.com/yiisoft/yii2),并使用Composer工具。在Yii的上一个版本中,你必须自己手工下载、并解压framework文件,当你使用Yii2时,你同样可以手工下载,但同时也可以采用专门精心准备的Composer工具来简化安装过程。

安装basic模版

在硬盘上找一个合适的目录,获取Composer的PHP归档文件(PHAR)。可以采用多种方式,例如,使用如下命令:

curl -sS https://getcomposer.org/installer | php

然后,运行下面的命令会创建一个名为basic的子目录,并使用Yii2团队发布的basic模版填充完成:

php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic

请注意:Yii2有几个特定的系统范围的依赖。你可能需要事先在GitHub仓库里查阅一下composer.json文件,学习它的用法(https://github.com/yiisoft/yii2)。在任何案例中,Composer会告诉你需要安装哪些东西才能使Yii2正常工作。Yii2经常更新,并且它的运行环境要求也会随之变化。

在开始执行上面的命令之前,你最好查看一下Composer的文档,理解命令的含义。跟我们有关的部分 yiisoft/yii2-app-basic basic,意思是“将发布在 https://github.com/yiisoft/yii2-app-basic 的内容,拷贝到本地的basic目录 ”。这个命令将安装项目的骨架,包含一系列预定义的目录。这其中有一个名为vendor的子目录,里面包含了很多的Composer包。basic目录,就是你新建应用的根目录。

使用Composer安装完所需的包,你可以使用下面这条命令:

php -S localhost:8000 –t basic/web

在命令中,8000是一个端口号,你可以根据自己的情况进行修改。这样,一个web server就已经可以访问了。

请注意:这当然并不是配置PHP Web应用的最佳方式。内建的web server只适应于“冒烟测试”,用以检验应用是否能正常工作。它只适合本地开发使用,而不能承担高负载。下一章将会介绍线上环境的部署。

使用浏览器访问 http://localhost:8000/。你将看到Yii2的欢迎页,这意味着你的基本设置已经搞定了。

basic模版的细节

通过阅读模版提供的README文件(https://github.com/yiisoft/yii2/blob/master/apps/basic/README.md),你可以获得basic目录结构的详尽说明。或者,你也可以阅读Yii2关于basic模版的文档(http://www.yiiframework.com/doc-.0/guide-start-installation.html)。

最重要的事情是,你需要理解,web目录,这个对外发布的目录,只是整个应用全部代码中的一个目录。web目录之外的其它目录,都是不能通过web server进行访问的。

正如你已经看过的安装过程描述,在你已经拥有PHP环境,可选的curl工具时,没有特殊的环境需要配置,所有的依赖都通过Composer管理起来了。

在basic模版中,第3代的自动化测试工具也设置好了。它包含了验收测试,功能测试,单元测试等大部分功能。已经包含在模版中的测试,就像示例程序一样非常有用,告诉我们怎样使用测试框架,这个测试工具就是 Codeception(http://codeception.com/)。

如果你只是想展示一些新闻种子或者做一个只包含几个页面的web工具,这个模版就已经足够可用了。然而,如果你的目标是包含前台和后台的大型系统(10个以上的独立路由),这就缺少一些子系统了。

同查看composer.json文件中的项目依赖,Yii2有几个重要的部分做成了独立的插件包,它们也通过Composer安装好了。这些包分别是:

  • Gii,代码生成器,将会在第3章讨论,自动生成CRUD代码

  • 调试控制台,已经包含在basic应用模版中

  • Codeception测试框架的一个包装

  • SwiftMailer库(http://swiftmailer.org/)的包装(https://github.com/yiisoft/yii2-swiftmailer)

  • Twitter Bootstrap UI库被打包进Yii2的asset包中(http://getbootstrap.com/)

前3个只是在开发时使用,放在生产环境中反而有害。基本上,你在任何一个项目中都需要它们。

basic模版安装的快速指引:

curl -sS https://getcomposer.org/installer | php
php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
php -S localhost:8000 -t basic/web

高级应用

相对于basic模版,Yii2还提供了一个advanced模版。它更多的针对中型应用(例如一些真实的商业应用),这种应用一个典型的特征是有两个分离的界面。一个进行内容管理,另一个展示给访问者。因此,通过这个模版,你能得到一个完整的CMS骨架。

安装advanced模版

第一步跟安装basic模版类似。需要获取Composer,并且设置一个新的项目:

curl -sS https://getcomposer.org/installer | php
php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced advanced

你可能已经注意到,在上面的命令中,仅仅是把“basic”替换成了“advanced”。

现在,我们来做一些新的改变。首先,进入刚刚创建的advanced目录,你需要生成本地化配置,运行下面的命令:

./init

是的,就是在应用的根目录执行init脚本。它会询问你想配置开发模式还是生产模式,并创建所有必须的辅助配置代码,以及入口脚本。需要明确说明的是,它仅仅根据你选择的是开发环境还是生产环境,把文件拷贝到environments目录下的dev或prod子目录中。打开environments目录看看,你就会理解init脚本是怎么工作的了。

下一步,你需要创建本应用使用的数据库。缺省情况下,配置开发环境,你应该在本机设置一个名为yii2advanced的数据库,root用户密码为空,你可以在common/config/main-local.php文件中看到这些细节。

既然你的数据库已经设置好了,你就可以运行迁移了。我们将在下一章讨论迁移脚本(并且我们甚至会自己写一些脚本),但是,如果你对数据迁移这个非常重要的概念很陌生,你需要在Yii2网站上阅读相关的官方文档(在写作本书时,官方文档还未发布,但是框架的文档在这里 https://github.com/yiisoft/yii2/blob/master/docs/guide/db-migrations.md)。(译注:创建数据库,写入初始化数据,升级数据库表等操作,建议放在迁移脚本中)

只需运行下面的命令即可:

./yii migrate

这个命令会展示当前迁移列表,目前包含一条迁移,并询问你是否要执行迁移。(译注:迁移使用前面配置的数据库,用以记录迁移执行的历史,因此,如果前面没有配置数据库,执行上面的命令时会有错误提示)

现在,所有事情都搞定了。执行下面的命令,让前后台都可以访问:

php -S localhost:8080 -t frontend/web
php -S localhost:8081 -t backend/web

与配置basic模版一样,我们使用了PHP内建的web server,仅仅是因为作为示例,这比在Apache或其它web server中配置更为简单。

现在,你可以使用后台进行内容管理,前台展示给访客。同时,你还有一个完善的控制台,可以通过yii脚本来执行迁移。advanced模版的前台跟basic模版很相似。下面是后台运行起来的截图:

后台缺省处于锁定状态,点击登录菜单,登录成功后,你才能看到和basic模版或前台一样的页面。

advanced模版的细节

对于advanced模版,最重要的事情是将3个basic模版整合在一起了:

  • frontend目录中,放置的是前台代码。对外发布的功能、内容都放在这里。

  • backend目录是为CMS(内容管理系统)准备的,非授权用户不能访问。你应该把CRUD这样的管理程序放在这里。

  • console目录主要用来存放自定义的控制台命令,可以放置任意多命令,就像迁移脚本一样。

  • common目录包含在前台、后台、控制台都可以使用的公共代码,因为这几部分构成了整个应用。

当然,没有人会强制你像上面描述的一样使用前台和后台,你也可能会有两个前台共享相同的代码,你可以按你想要的方式自由的使用。不管怎样,advanced模版已经准备好的后台UI,在开始时就提供了权限的密码保护。

在刚刚安装的advanced应用中,你需要知道登录特性。初始时,没有定义用户,你必须使用前台的signup(注册)来自己创建一个。这样,你就能用刚刚创建的身份登录前台和后台。前台跟basic应用一样,后台也差不多,仅仅是加入了登录功能。所以,后续的开发就完全交给你了。

advanced安装的快速指引:

curl -sS https://getcomposer.org/installer | php
php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced advanced
cd advanced
./init
mysql -u root -e 'create database yii2advanced'
./yii migrate
php -S localhost:8080 -t frontend/web
php -S localhost:8081 -t backend/web

小结

Yii2几乎允许你配置framework中使用的所有路径,因此,你可以按你想法创建目录结构。利用PHP5.3引入的命名空间,你甚至可以使物理结构不同于逻辑结构,也就是说目录中文件的存放不同于命名空间中的类的结构,但这样做很乏味。

在下一章,我们将会不使用模版,白手起家,通过Yii2创建一个真实的项目(即使很小)。

下一节

 

 

© 著作权归作者所有

zcgly

zcgly

粉丝 7
博文 6
码字总数 13340
作品 0
成都
技术主管
私信 提问
加载中

评论(7)

kut
kut
包治好
zcgly
zcgly 博主

引用来自“Anthony_gz”的评论

支持原创~! 但这里也有教程.
http://www.digpage.com/

digpage的教程我读过,写得很赞!
Anthony_gz
Anthony_gz
支持原创~! 但这里也有教程.
http://www.digpage.com/
草熘最新2015
更新啊
zcgly
zcgly 博主
在继续翻译中,第二章太TM长了......
木川瓦兹
木川瓦兹
继续啊
金三胖
金三胖
还不更新?
Yii 2.0开发一个仿京东商城平台

第1章 课程简介 介绍了课程内容、背景和案例展示。 第2章 项目的准备工作 介绍了如何使用PHP依赖管理工具Composer安装Yii2框架,模拟配置真实企业开发项目运行环境和编辑器。 第3章 项目前台...

15543595340
2018/05/19
0
0
【翻译】Yii2 第2章 用Yii2创建自定义应用(第2部分)

将Yii框架引入我们的应用 现在,我们拥有了可以工作的全套基础设施,让我们回到在设计阶段时定义的第一个特性,让我们先为它写一个验收测试。 第一个端到端测试 端到端验收测试的要点就是,我...

zcgly
2015/09/29
454
1
YII2 刷新网页时验证码不刷新

第一种方法(失败): 修改 fixedVerifyCode 值,确实可以刷新页面的时候改变验证码, 但是 Session 里面没有值,没有值,没有值... 第二种方法(成功),网上大部分都是这个解决方案,修改 ...

红石头
2015/12/31
869
1
著名 PHP 框架 Yii2 将使用 Ruby 重写?

大名鼎鼎的PHP框架Yii官网首页昨天出现了一则重磅消息,声称将使用Ruby代替PHP语言来重写下一个大版本Yii2。 原文内容翻译如下: 我们很高兴地宣布我们关于Yii2的发展决定,从2013年4月1日,...

oschina
2013/04/02
7.5K
33
Yii 2.0.1 发布

Yii Framework 2.0.1 发布,此版本现已提供下载:http://www.yiiframework.com/download/。 Yii 2.0.1 是 Yii 2.0 的分支版本,包括大约 90 个新特性和 bug 修复。完整改进列表请看更新日志。...

raykwok
2014/12/08
3.9K
18

没有更多内容

加载失败,请刷新页面

加载更多

iOS Xcode升级包地址(感谢大神)

下载地址:DeviceSupport

_____1____
26分钟前
6
0
Qt编写自定义控件71-圆弧进度条

一、前言 现在web形式的图表框架非常流行,国产代表就是echart,本人用过几次,三个字屌爆了来形容,非常强大,而且易用性也非常棒,还是开源免费的,使用起来不要太爽,内置的各种图表和仪表...

飞扬青云
26分钟前
4
0
润乾报表与 ActiveReport JS 功能对比

简介 润乾报表是用于报表制作的大型企业级报表软件,核心特点在于开创性地提出了非线性报表数学模型,采用了革命性的多源关联分片、不规则分组、自由格间运算、行列对称等技术,使得复杂报表...

泡泡糖儿
38分钟前
5
0
【1015】LNMP架构二

【1015】LNMP架构二 三、PHP安装 PHP安装和LAMP安装PHP方法有差别,需要开启php-fpm服务 1、下载PHP7至/usr/local/src/ 切换目录:cd /usr/local/src 2、解压缩 tar -jxvf php-7.3.0.tar.gz...

飞翔的竹蜻蜓
今天
5
0
浅谈Visitor访问者模式

一、前言 什么叫访问,如果大家学过数据结构,对于这点就很清晰了,遍历就是访问的一般形式,单独读取一个元素进行相应的处理也叫作访问,读取到想要查看的内容+对其进行处理就叫作访问,那么...

青衣霓裳
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部