初识yii2
下载
首先打开官网,官网建议使用composer安装yii2,composer是一个用来管理php包依赖的工具,相当于python中的pip工具。很可惜我用的是蛋疼的长城宽带,这两天在家里并没有下载到,于是直接下载了以下文件。条件允许当然是用composer更好。
- Yii2的基本应用程序模板:yii-basic-app-2.0.11.tgz
- Yii2的高级应用程序模板:yii-advanced-app-2.0.11.tgz
- yii2原版框架:yii2-2.0.11.1
目录结构
每个文件夹的根目录都有README.md(建议用vscode查看md文件)件,其中basic的readme用英文详细写明了:
- 目录结构
- 安装要求
- 安装方法
- 配置
- 测试
yii-basic-app-2.0.11.tgz的目录结构:
assets/ 前端资源包
commands/ 控制台命令
config/ 应用配置
controllers/ web应用控制器
mail/ 邮件模板
models/ 模型
runtime/ 运行时文件
tests/ 各种测试的基本应用
vendor/ 依赖第三方包
views/ web应用的视图
web/ web入口文件和web资源
yii-advanced-app-2.0.11.tgz的目录结构:
common
config/ 公共配置文件
mail/ 邮件模板
models/ 用于前段后端的模型类
tests/ 公共类的测试
console
config/ 控制台配置
controllers/ 控制台控制器
migrations/ 数据库迁移
models/ 特定模型类控制台
runtime/ 运行时文件
backend
assets/ 应用程序资源如JavaScript和CSS
config/ 后台配置
controllers/ web控制器类
models/ 后台模型类
runtime/ 运行时文件
tests/ 后台应用测试
views/ web应用视图
web/ web入口文件和web资源
frontend
assets/ 应用程序资源如JavaScript和CSS
config/ 前台配置
controllers/ web控制器类
models/ 前台模型类
runtime/ 运行时文件
tests/ 前台应用测试
views/ web应用视图
web/ web入口文件和web资源
widgets/ 前台小部件
vendor/ 依赖第三方包
environments/ 基于环境的重写
yii2-2.0.11.1的目录结构:
build/ 内部使用的构建工具
docs/ 文档
framework/ 核心框架代码
tests/ 核心框架代码测试
根据我的实际使用和观察,他们的区别是:
- basic的结构为单一入口网站模板
- advanced的结构为多入口模板,包括了前台
frontend
后台backend
还包括了console
目录 - yii2原版框架中的
framework
文件夹被前两个模板包含在了vendor\yiisoft\yii2
文件夹中
也就是说他们之间大概的包含关系为,yii2<basic<advance,但是yii2原版压缩包内,有大量关于yii2的md文档文件,非常详尽,所以绝对有必要下载。
高级应用程序模板安装
这里我们直接安装高级应用程序模板。 win+r
打开运行,输入cmd
打开命令行,进入已经解压的高级程序模板的根目录。输入init
并执行。 输入0指定为开发环境,输入y确定操作,这时就自动去配置文件了,包括main-local.php
的cookieValidationKey
和入口文件等等。以下是我重新安装一次的命令行返回数据,会提醒我是否覆盖。
F:\phpStudy\WWW\yii_advanced>init
Yii Application Initialization Tool v1.0
Which environment do you want the application to be initialized in?
[0] Development
[1] Production
Your choice [0-1, or "q" to quit] 0
Initialize the application under 'Development' environment? [yes|no] y
Start initialization ...
exist backend/config/main-local.php
...overwrite? [Yes|No|All|Quit] a
overwrite backend/config/main-local.php
unchanged backend/config/params-local.php
unchanged backend/config/test-local.php
unchanged backend/web/index-test.php
unchanged backend/web/index.php
overwrite common/config/main-local.php
unchanged common/config/params-local.php
unchanged common/config/test-local.php
unchanged console/config/main-local.php
unchanged console/config/params-local.php
overwrite frontend/config/main-local.php
unchanged frontend/config/params-local.php
unchanged frontend/config/test-local.php
unchanged frontend/web/index-test.php
unchanged frontend/web/index.php
unchanged yii
unchanged yii_test
unchanged yii_test.bat
generate cookie validation key in backend/config/main-local.php
generate cookie validation key in frontend/config/main-local.php
chmod 0777 backend/runtime
chmod 0777 backend/web/assets
chmod 0777 frontend/runtime
chmod 0777 frontend/web/assets
chmod 0755 yii
chmod 0755 yii_test
... initialization completed.
配置数据库
\common\config\main-local.php
<?php
return [
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=yii2advanced',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@common/mail',
// send all mails to a file by default. You have to set
// 'useFileTransport' to false and configure a transport
// for the mailer to send real emails.
'useFileTransport' => true,
],
],
];
以上是init
之后main-local.php
的内容,需要更改的是数据库地址、数据库名、账号、密码、编码。
导入表
运行yii migrate
导入表
F:\phpStudy\WWW\yii_advanced>yii migrate
Yii Migration Tool (based on Yii v2.0.11)
Creating migration history table "migration"...Done.
Total 1 new migration to be applied:
m130524_201442_init
Apply the above migration? (yes|no) [no]:y
*** applying m130524_201442_init
> create table {{%user}} ... done (time: 0.144s)
*** applied m130524_201442_init (time: 0.281s)
1 migration was applied.
Migrated up successfully.
F:\phpStudy\WWW\yii_advanced>
数据库中出现两个新建立的表。
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `auth_key` varchar(32) COLLATE utf8_unicode_ci NOT NULL, `password_hash` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `password_reset_token` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `status` smallint(6) NOT NULL DEFAULT '10', `created_at` int(11) NOT NULL, `updated_at` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`), UNIQUE KEY `email` (`email`), UNIQUE KEY `password_reset_token` (`password_reset_token`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; CREATE TABLE `migration` ( `version` varchar(180) NOT NULL, `apply_time` int(11) DEFAULT NULL, PRIMARY KEY (`version`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
这时候在浏览器打开/frontend/web/
的目录就可以看到欢迎界面了。
可以看到yii2的调试功能非常强大,接下来就开始熟悉yii2的各种强大的工具。