资讯专栏INFORMATION COLUMN

YII2快速学习笔记

kbyyd24 / 3398人阅读

摘要:高性能始终是的首要目标之一。版是上代的老版本,现在处于维护状态。版是一个完全重写的版本,采用了最新的技术和协议,包括依赖包管理器代码规范命名空间特质等等。所以,我们学习版本。启用本镜像服务系统全局配置即将配置信息添加到的全局配置文件中。

工作中需要用到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

      
      DocumentRoot "位置advancedfrontendweb"     
      ServerName www.demo.com     
      ServerAlias www.demo.com  
    
  
       
      DocumentRoot "位置advancedackendweb"     
      ServerName admin.demo.com     
      ServerAlias admin.demo.com  
  

配置完成后打开浏览器,输入配置的本地域名: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.视图文件夹:
frontendviews

// 2.控制器
frontendcontrollers

// 3.Model层
frontendmodel

再来看一段程序TestController.php

namespace frontendcontrollers; 
use yiiwebController; 
class TestController extends Controller 
{ 
    public function actionIndex () 
    { 
       return $this->render("index");
    } 
    public function actionCreate () { 
    } 
} 

创建模板:frontend/views/test/index.php



Hello World!

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,
        ]);

    }

修改模板:

Hello !

使用迁移命令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.

 [
        "db" => [
            "class" => "yiidbConnection",
            // "dsn" => "mysql:host=localhost;dbname=yii",
            "dsn" => "mysql:host=127.0.0.1;dbname=yii",
            "username" => "root",
            "password" => "518666",
            "charset" => "utf8",
        ],
        "mailer" => [
            "class" => "yiiswiftmailerMailer",
            "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. advancedconsolemigrations 目录,可能你已经注意到了,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实战式教程

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22250.html

相关文章

  • 一个程序员对架构的认识

    摘要:架构的含义小石最近加入了一家生鲜电商公司。所以可以认为所谓的框架就是确定了一些业内规范,从某种程度上对大家形成约束或者形成都能理解的规定。没有完美的架构只有合适的架构。 最近订阅了一些架构方面的资料,阅读后获益匪浅,想着整理一些自己的体会与思考,形成架构方面的读书笔记,一来与大家交流,二来通过文字的形式检查自己到底收获多少! 我们系统是MVC架构的 淘宝的架构好屌 最近在学习MySQL...

    darcrand 评论0 收藏0
  • SegmentFault 社区访谈 | mcfog:自由进出 Coding && A

    摘要:上次的访谈,介绍了下可爱的依云酱,回忆传送门。这里简单地介绍下龙女仆,全名小林家的龙女仆,为什么介绍这部剧呢因为设计狮颜值同学也安利了这部。剧情简介在独身又劳累的小林划重点一名程序员身边突然出现的穿着女仆服装的美少女托尔。 showImg(https://segmentfault.com/img/bVR6p5?w=900&h=385); 上次的访谈,介绍了下可爱的依云酱,回忆传送门。不...

    neroneroffy 评论0 收藏0
  • SegmentFault 社区访谈 | mcfog:自由进出 Coding && A

    摘要:上次的访谈,介绍了下可爱的依云酱,回忆传送门。这里简单地介绍下龙女仆,全名小林家的龙女仆,为什么介绍这部剧呢因为设计狮颜值同学也安利了这部。剧情简介在独身又劳累的小林划重点一名程序员身边突然出现的穿着女仆服装的美少女托尔。 showImg(https://segmentfault.com/img/bVR6p5?w=900&h=385); 上次的访谈,介绍了下可爱的依云酱,回忆传送门。不...

    lx1036 评论0 收藏0
  • yii2实战教程之第一个Yii程序

    摘要:出于实战基础加之自语言的书籍出版以来,几乎所有的编程书籍都讲述了一个的例子作为开始。操作,其实就是一个是动作的意思,也可以描述为我们前面说的响应地址。 作者:白狼 出处:http://www.manks.top/document/yii_first_application.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究...

    Near_Li 评论0 收藏0

发表评论

0条评论

kbyyd24

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<