【翻译】Yii2 第1章 开始

原创
2015/09/15 10:10
阅读数 1.8K

让我们看看,怎样以最小的代价使用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创建一个真实的项目(即使很小)。

下一节

 

 

展开阅读全文
加载中
点击加入讨论🔥(7) 发布并加入讨论🔥
打赏
7 评论
17 收藏
3
分享
返回顶部
顶部