YII2快速学习笔记
工作中需要用到YII框架,于是乎,系统的学习下这套框架,详细教程请看考该站完整系列:YII2教程
一、YII简介
1、什么是YII
Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。
2、YII优点
和其他 PHP 框架类似,Yii 实现了 MVC(Model-View-Controller)设计模式并基于该模式组织代码。
Yii 的代码简洁优雅,这是 Yii 的编程哲学。它永远不会为了要迎合某个设计模式而对代码进行过度的设计。
Yii 是一个全栈框架,提供了大量久经考验,开箱即用的特性,例如:对关系型和 NoSQL 数据库都提供了查询生成器(QueryBuilders)和 ActiveRecord;RESTful API 的开发支持;多层缓存支持,等等。
Yii 非常易于扩展。你可以自定义或替换几乎任何一处核心代码。你还会受益于它坚实可靠的扩展架构,使用、再开发或再发布扩展。
高性能始终是 Yii 的首要目标之一。
3.Yii 版本
Yii 当前有两个主要版本:1.1 和 2.0。 1.1 版是上代的老版本,现在处于维护状态。2.0 版是一个完全重写的版本,采用了最新的技术和协议,包括依赖包管理器(Composer)、PHP 代码规范(PSR)、命名空间、Traits(特质)等等。 2.0 版代表了最新一代框架,是未来几年中我们的主要开发版本。所以,我们学习2.0版本。
二、安装YII2
1.使用composer安装
什么是Composer? 由于墙的原因,会下载很慢,所以,这里我们使用Composer中国镜像。
启用本镜像服务,系统全局配置: 即将配置信息添加到 Composer 的全局配置文件 config.json 中。
composer config -g repo.packagist composer https://packagist.phpcomposer.com
2.第二步
php composer.phar global require "fxp/composer-asset-plugin:~1.1.1"
如果你的Composer是全局安装的,那么就不需要输入php composer.phar
,只需要用composer
命令即可。
composer global require "fxp/composer-asset-plugin:~1.1.1"
安装这个玩意儿,不然你会发现新增加好的项目中没有vendor目录
3.下载yii
php composer.phar create-project --prefer-dist yiisoft/yii2-app-advanced advanced
全局安装方法:
composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced
前最好有github账号,需要授权拉取的,不然。。。。
坑爹啊,还需要Github授权-_-!!!
输入这个链接,在浏览器中打开,需要登录到自己的Github账户:
https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+kaiyideMacBook-Pro.local+2016-12-31+0302
获取到Token授权之后,复制粘贴到这里:
Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+kaiyideMacBook-Pro.local+2016-12-31+0311 to retrieve a token. It will be stored in "/Users/kaiyiwang/.composer/auth.json" for future use by Composer. Token (hidden):(注意这里是从Github获取到的授权Token) Token stored successfully. Reading bower.json of bower-asset/jquery.inputmask (3.2.5)
4.下载好YII后,初始化操作
如果你是类linux系统,切换到advanced目录执行php init命令进行初始化,如果你是windows系统,请双击advanced目录下的init.bat文件
php init
5.服务器配置
5.1 更改hosts文件内容
127.0.0.1 www.demo.com 127.0.0.1 admin.demo.com
5.2 更改apache服务器设置
(更改完成后需要重启Apache服务器)
更改apache下conf/extra/httpd-vhosts.conf
<VirtualHost *:80> DocumentRoot "位置\advanced\frontend\web" ServerName www.demo.com ServerAlias www.demo.com </VirtualHost> <VirtualHost *:80> DocumentRoot "位置\advanced\backend\web" ServerName admin.demo.com ServerAlias admin.demo.com </VirtualHost>
配置完成后打开浏览器,输入配置的本地域名:www.yii.dev访问,成功了^_^
如果跳转到apache服务器,还需要将apache
httpd-conf中Include conf/extra/httpd-vhosts.conf
前面的#注释去掉,重启apache服务器即可
安装小结:
1、通过官网或Composer下载Yii
2、解压后拷贝advanced目录放到web可访问目录,文件名advanced,不做改动
3、如果你是类linux系统,切换到advanced目录执行php init命令进行初始化,如果你是windows系统,请双击advanced目录下的init.bat文件
4、接下来会让我们选择开发环境 0开发环境 1生产环境 这里我们选择0 开发环境,输入后回车,会让我们输入yes或者no进行确认,这里我们输入yes确认即可
5、ok了之后,你仍然需要做得是切换到根目录下,执行命令composer install
6、验证下是否安装成功了,这个时候你可以在浏览器地址栏输入http://localhost/advanced/fro...看效果了,界面上显示一个大大的Congratulations即代表安装成功!
更多详情请参考该博文:yii2入门-安装 Yii2
三、第一个程序-Hello,world
先来看几个重要的文件夹:
// 1.视图文件夹: frontend\views\ // 2.控制器 frontend\controllers\ // 3.Model层 frontend\model\
再来看一段程序TestController.php
namespace frontend\controllers; use yii\web\Controller; class TestController extends Controller { public function actionIndex () { return $this->render('index'); } public function actionCreate () { } }
创建模板:frontend/views/test/index.php
<?php /** * Created by PhpStorm. * User: kaiyiwang * Date: 16/12/31 * Time: 17:22 */ ?> <div class="test-index"> <h1>Hello World!</h1> </div>
Yii2语法规定:声明的控制器必须带上Controller后缀,同时操作必须带上前缀action!
yii2中操作名(action)遵循驼峰式命名,也就是说如果你是多个单词,请保证你的命名规则是actionCreateArticle
而不是actionCreatearticle!当然,这只是一种规范,你不这样做也没人拦你。需要提醒注意的是多个单词驼峰式命名,访问操作的时候,多个单词需要像create-article这样用连接符连接而不是createArticle哦
访问第一个测试文件前的配置:
首先我们先配置下域名yii.dev指向frontendweb目录,我们后文所指的该域名均指向这里。
在frontendcontrollers目录下新建TestController.php文件,内容参考上面我们创建Test控制器的代码。
地址栏输入http://www.yii.dev/index.php?...访问看看结果
如果需要传递参数,则是这样:
http://www.yii.dev/index.php?...
public function actionIndex($name) { return $this->render('index', [ 'name' => $name, ]); }
修改模板:
<div class="test-index"> <h1>Hello <?= yii\helpers\Html::encode($name) ?>!</h1> </div>
使用迁移命令migration出现了这样的问题:
➜ advanced yii migrate/create create_blog_table zsh: command not found: yii ➜ advanced
什么原因呢???
原来Mac下的迁移命令是php yii
:
➜ advanced php yii migrate/create create_blog_table Yii Migration Tool (based on Yii v2.0.10)
祸不单行,使用gii Module Gnenrator又出现了这样了问题,郁闷啊。。。
找了许多答案,终于找到了两个靠谱的解决方案:
快速解决方法;把Yii根目录下的/common/config/mail-local.php 文件中的localhost改成127.0.0.1
根本问题解决方法;windows不会出现这种问题,mac容易出现这种问题,是因为mac里面本来就有一个PHP了,如果还用XAMPP的话,这个时候就有两个PHP,但如果不经过配置,命令行方式的PHP默认执行的是系统自带的,所以要修改默认执行的PHP
修改方法: 找到Yii根目录下的/yii文件打开,
第一行#!/usr/bin/env php 改成 #!/usr/bin/env /Applications/XAMPP/xamppfiles/bin/php
然后重启服务器再试试:)
这里我们使用第一种简单的方法,改下配置文件,/common/config/mail-local.php
,将localhost改为127.0.0.1
.
<?php return [ 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', // 'dsn' => 'mysql:host=localhost;dbname=yii', 'dsn' => 'mysql:host=127.0.0.1;dbname=yii', 'username' => 'root', 'password' => '518666', '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, ], ], ];
OK,再次访问,问题解决:
migration迁移文件步骤
1.使用php yii migrate命令生成博客 blog 对应的数据表迁移:
// 1.使用php yii migrate命令生成博客 blog 对应的数据表迁移: php yii migrate/create create_blog_table
2.生成的迁移文件中添加字段
// 2. advanced\console\migrations 目录,可能你已经注意到了,yii migrate 命令已经在迁移文件中为我们添加了主键ID和表名,接下来我们要编辑该文件修改表名以及添加更多的列到数据表blog: $this->createTable('blog', [ 'id' => $this->primaryKey(), 'title' => $this->string(100)->notNull()->defaultValue(''), 'content' => $this->text(), 'create_time' => $this->datetime(), ]);
3.迁移文件生成表字段
./yii migrate
参考文章:
yii2实战式教程