初识yii2

下载

首先打开官网,官网建议使用composer安装yii2,composer是一个用来管理php包依赖的工具,相当于python中的pip工具。很可惜我用的是蛋疼的长城宽带,这两天在家里并没有下载到,于是直接下载了以下文件。条件允许当然是用composer更好。

目录结构

每个文件夹的根目录都有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资源

31243518-file_1489904634405_550.png

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/            基于环境的重写

38006180-file_1489904239797_1657a.png

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.phpcookieValidationKey和入口文件等等。以下是我重新安装一次的命令行返回数据,会提醒我是否覆盖。

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/的目录就可以看到欢迎界面了。

3104519-file_1489921199938_dbd.png

可以看到yii2的调试功能非常强大,接下来就开始熟悉yii2的各种强大的工具。

最后修改:2021 年 01 月 12 日
如果觉得我的文章对你有用,请随意赞赏