yii2.0学习笔记

yii2.0学习笔记

一、前言
    1.yii框架确实比TP强大很多,扩展性很强,性能更应该是给力,虽然我还没用他做过项目。
    但我发现php框架都具有通用的相似性,比如:
         ①,通用的MVC模式,
         ②,路由方式相似。
         ③,目录结构的大同小异。

    2.





二、目录学习

A:  basic版本:基础版本
         
basic版本的特点是:默认根目录就是一个主模块,如果还有其他的模块,可以在根目录下新建一个modules目录并配置为一个模块目录,在modules下面再分配模块

下面是MVC的三个目录(默认主模块)
1.controllers
 
2.models
 
3.views
与TP一样,一个controller对应一个view文件夹
 
3+.(modules)

 模块下也可以还有子模块:
 

下面是系统的或者公用的一些文件夹
4.web
存放系统的资源文件


传说中的入口文件  index.php  就位于  web  目录下面。 其中的index.php是 应用入口,做一些初始化工作

首先来看看 index.php 文件的内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?phpdefined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../../vendor/autoload.php');
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../../common/config/bootstrap.php');
require(__DIR__ . '/../config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../../common/config/main.php'),
require(__DIR__ . '/../../common/config/main-local.php'),
require(__DIR__ . '/../config/main.php'),
require(__DIR__ . '/../config/main-local.php'));
$application = new yii\web\Application($config);$application->run();


5. config
主模块下的公共配置
 
6.vendor
是yii的核心文件夹
里面有yii引擎的核心文件以及各种yii插件应用依赖第三方的包
 
7. runtime
 
下面是不太常用的或者有时候不需要的文件夹
8.mail

9.assets

10.tests

11.commands


下面是根目录文件

12. composer.json

13. composer.lock


14.



 
··································· ··································· ···································
B:    advance版本:高级版
         
 advance 版本的特点是:根目录下预先分配了三个模块,分别是前台、后台、控制台模块。


1.backend
它主要用于管理后台,网站管理员来管理整个系统。

assets 目录用于存放前端资源包PHP类。 这里不需要了解什么是前端资源包,只要大致知道是用于管理CSS、js等前端资源就可以了。
config 用于存放本应用的配置文件,包含主配置文件 main.php 和全局参数配置文件 params.php 。
models views controllers 3个目录分别用于存放数据模型类、视图文件、控制器类。这个是我们编码的核心,也是我们工作最多的目录。
widgets 目录用于存放一些常用的小挂件的类文件。
tests 目录用于存放测试类。
web 目录从名字可以看出,这是一个对于Web服务器可以访问的目录。 除了这一目录,其他所有的目录不应对Web用户暴露出来。这是安全的需要。
runtime 这个目录是要求权限为 chmod 777 ,即允许Web服务器具有完全的权限, 因为可能会涉及到写入临时文件等。 但是一个目录并未对Web用户可见。也就是说,权限给了,但是并不是Web用户可以访问到的。


    
2.frontend

我们的目标最终用户提供的主要接口的前端应用。 其实,前台和后台是一样的,只是我们逻辑上的一个划分.。
  好了,现在问题来了。对于  frontend   backend   console  等独立的应用而言, 他们的内容放在各自的目录下面,他们的运作必然用到Yii框架等  vendor  中的程序。 他们是如何关联起来的?这个秘密,或者说整个Yii应用的目录结构的秘密, 就包含在一个传说中的称为入口文件的地方。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?phpdefined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../../vendor/autoload.php');
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../../common/config/bootstrap.php');
require(__DIR__ . '/../config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../../common/config/main.php'),
require(__DIR__ . '/../../common/config/main-local.php'),
require(__DIR__ . '/../config/main.php'),
require(__DIR__ . '/../config/main-local.php'));
$application = new yii\web\Application($config);$application->run();



3.console
控制台应用程序包含系统所需要的控制台命令的。
 




下面是全局公共文件夹
4.common

其中:

  • config 就是通用的配置,这些配置将作用于前后台和命令行。
  • mail 就是应用的前后台和命令行的与邮件相关的布局文件等。
  • models 就是前后台和命令行都可能用到的数据模型。 这也是 common 中最主要的部分。

 公共的目录(Common)中包含的文件用于其它应用程序之间共享。例如,每一个应用程序可能需要访问该数据库的使用 ActiveRecord。因此,我们可以将AR模型类放置在公共(common)的目录下。同样,如果在多个应用程序中使用了一些辅助(helper )或部件类(widget ),我们也应该把这些放置在公共目录(common)下,以避免重复的代码。
  正如我们将很快解释,应用程序也可以共享一部分的共用配置。因此,我们还可以存储config目录下共同的常见配置。
当开发一个大型项目开发周期长,我们需要不断调整数据库结构。出于这个原因,我们还可以使用数据库迁移(DB migrations )功能来保持跟踪数据库的变化。我们将所有 DB migrations(数据库迁移)目录同样都放在公共(common)目录下面。

5.environment
每个Yii环境就是一组配置文件, 包含了入口脚本 index.php和各类配置文件。 其实他们都放在/environments 目录下面.

  从上面的目录结构图中,可以看到,环境目录下有3个东东:
  • 目录 dev
  • 目录 prod
  • 文件 index.php

其中, dev 和 prod 结构相同,分别又包含了4个目录和1个文件:

  • frontend 目录,用于前台的应用,包含了存放配置文件的 config 目录和存放web入口脚本的web 目录
  • backend 目录,用于后台应用,内容与 frontend 相同
  • console 目录,用于命令行应用,仅包含了 config 目录,因为命令行应用不需要web入口脚本, 因此没有 web 目录。
  • common 目录,用于各web应用和命令行应用通用的环境配置,仅包含了 config 目录, 因为不同应用不可能共用相同的入口脚本。 注意这个 common 的层级低于环境的层级,也就是说,他的通用,仅是某一环境下通用,并非所有环境下通用。
  • yii 文件,是命令行应用的入口脚本文件。

对于分散于各处的 web 和 config 目录而言,它们也是有共性的。

  • 凡是 web 目录,存放的都是web应用的入口脚本,一个 index.php 和一个测试版本的index-test.php
  • 凡是 config 目录,存放的,都是本地配置信息 main-local.php 和 params-local.php

6.vendor
 
  vendor  。 这个目录从字面的意思看,就是各种第三方的程序。 这是Composer安装的其他程序的存放目录,包含Yii框架本身,也放在这个目录下面。 如果你向 composer.json  目录增加了新的需要安装的程序,那么下次调用Composer的时候, 就会把新安装的目录也安装在这个  vendor  下面。

下面也是一些不太常用的文件夹
7.vagrant
 
8.tests
 




三、功能学习

1.controller

      每一个controller都要声明一个namespace,
    与TP一样,一个controller必须继承引擎的controller,并且一个controller对应一个view的文件夹,一个action对应一个请求处理。
    输出视图时,用render(),renderPartial().    

2.view
每一个 controller对应一个view的文件夹,但是视图文件yii不要求是HTML,而是php,所以每个视图文件php里面都是视图片段:


 
   而views下面会有一个默认的layouts文件夹,里面存放的就是布局文件,什么意思呢?:
在控制器中,会有一个layout字段,如果制定他为一个layout视图文件,比如common.php,那么视图就会以他为主视图,其他的view视图片段都会作为显示片段嵌入到layout文件common.php中.
而如果不明确重载layout字段,那么默认layout的值是main,意味着layouts的main.php是视图模板。
控制器:

common.php:


layouts 

这样就达到了视图复用的作用。
当然了,视图与模板之间还有数据传递以及继承覆盖的功能。

3.models
一个model对应着一个数据库中的一张表。
model不是必须定义的,因为系统会默认给你定义。
在模型层中,有model和activeRecord两种方式的model.其中 activeRecord是继承了 model。
Model负责数据层交互,ActiveRecord应该是封装了一些业务逻辑,以及本身的持久化等功能。model就是负责单纯的数据库操作,插入查询更新等功能。ActiveRecord就是在这个基础上,要进行一些业务逻辑的判断,或者封装一些方法,比如将一个插入操作封装成一个add方法,使用的时候直接调用add,然后传入一组数据,就自动帮你插入数据库了,不需要写sql语句。



 
 
另外model层的 activeRecord具有魔术get、set方法,能把get

 
 
 并且还支持关联查询的功能:
对于关联型数据表,支持一键查询。
 
 


4.缓存

yii的缓存功能很有意思。包括:普通数据缓存、视图块缓存、页面缓存、http缓存。
最重要的是缓存依赖,给缓存一个解除时间或者一个解除事件。

5.事务、触发

yii具有 事务& 事件触发的机制。
 
 
 
 
 



6.类混合、对象混合


 


7.依赖注入、容器

 
 
 

四、强大插件

1、Gii

Gii是一个代码模板生成器,只要按照你给定的参数,便可以生成各种代码,而这些代码的编写是重复性的劳动。
Gii是项目中自带的一个插件, http://localhost/yii_basic/web/index.php?r=gii 即可打开。
①生成ActiveRecord

 ②生成controller

 ③生成view视图的表单
 
④生成一个模块
 

2.composer

composer是一个解决php安装依赖的软件。




五、学习资料
1. 深入理解Yii2.0

2.Yii 2.0 权威指南

3.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值