深入学习Yii2.0之--目录结构和入口脚本
2017-08-22 00:00
295 查看
1、YII2.0的新特性
运用了PHP命名空间、Trait、 PSR标准 、Composer和Bower包管理器, 等新技术新标准。
实现了 依赖注入和依赖注入容器 以及 服务定位器(Service Locator) 等新架构新模式。
Yii2.0格外重视安全性,采取一系列手段有效防止SQL注入、XSS攻击、CSRF攻击、cookie篡改等。
广泛支持各类SQL和NOSQL数据库,高效实现了Active Record等数据库查询、操作界面,提供数据库迁移、复制、 读写分离等功能。
只需极少量的代码就可以实现完全符合标准的RESTful API。
支持各种粒度、介质的缓存机制。
提供多种认证和授权手段基于cookie和基于令牌的认证,RBAC等权限控制手段,支持OpenID,OAuth1,OAuth2等。
支持Bootstrap,jQuery UI,提供了丰富的Widget挂件供使用。
完善的国际化支持,提供符合 ICU标准 的时间、复数等格式化工具和消息翻译、视图翻译等功能。
除了支持Twig和Smarty 2个主流的PHP模版引擎外,开发者还可以自己写扩展支持其他引擎。
为苦命码农提供了 Yii调试工具条 和 Gii代码生成器 以及 文档生成器 等高效开发工具。
集成了 Codeception 和 Faker,并与DB Migration相结合,提供了一个fixture框架,方便测试开发。
提供了一个简单应用模板和高级应用模板,适用于不同的开发场景,都可以帮助开发者尽快搭建起自己的应用。
2、YII2.0目录结构
1、基本版目录结构
2、高级版目录结构
对于高级应用而言,相当于有 backend frontend console 三个独立的Yii应用
config 就是通用的配置,这些配置将作用于前后台和命令行。
mail 就是应用的前后台和命令行的与邮件相关的布局文件等。
models 就是前后台和命令行都可能用到的数据模型。
vendor:三方依赖包库
前台的目录结构
其实,前台和后台是一样的,只是我们逻辑上的一个划分。 典型的, frontend 具有如下的一个目录结构:
<?php
defined('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();
命令行应用入口脚本
命令行应用的入口脚本是 path/to/digpage.com/yii 文件。这个文件被 init 脚本设为可执行的。
对比于Web应用的 index.php 入口脚本, yii 并没有太多的新东西,其中核心的东西根本就没变。
我们先来看看这个这个 yii 是什么?
首先,它没有扩展名,我们不好知道其具体类型。 但是从文件内容的第一行 #!/usr/bin/env php 来看,这是一个bash脚本。 第一行在告诉bash,也在告诉我们,这是一个使用PHP运行的脚本。
但第二行的 又清楚的向我们表明,这货其实也是个 PHP 文件,只是没有加上PHP后缀而已 。
接下来, define('STDIN') 和 define('STDOUT') 则为fcgi定义了标准输入和标准输出。
在各require语句中,由于 yii 的位置与 index.php 不同,是位于应用根目录下,所以目录结构上更简单些。
最后,在Yii应用跑起来后,还要获取其返回值,并以该返回值退出脚本,通知操作系统退出时的状态。
对于Windows系统而言,命令行的入口脚本仍然是 yii ,但是命令行下无法直接运行。所以, 细心的Yii为我们准备了一个 yii.bat 。这个文件会以 php yii 形式调用PHP来运行入口脚本 。
运用了PHP命名空间、Trait、 PSR标准 、Composer和Bower包管理器, 等新技术新标准。
实现了 依赖注入和依赖注入容器 以及 服务定位器(Service Locator) 等新架构新模式。
Yii2.0格外重视安全性,采取一系列手段有效防止SQL注入、XSS攻击、CSRF攻击、cookie篡改等。
广泛支持各类SQL和NOSQL数据库,高效实现了Active Record等数据库查询、操作界面,提供数据库迁移、复制、 读写分离等功能。
只需极少量的代码就可以实现完全符合标准的RESTful API。
支持各种粒度、介质的缓存机制。
提供多种认证和授权手段基于cookie和基于令牌的认证,RBAC等权限控制手段,支持OpenID,OAuth1,OAuth2等。
支持Bootstrap,jQuery UI,提供了丰富的Widget挂件供使用。
完善的国际化支持,提供符合 ICU标准 的时间、复数等格式化工具和消息翻译、视图翻译等功能。
除了支持Twig和Smarty 2个主流的PHP模版引擎外,开发者还可以自己写扩展支持其他引擎。
为苦命码农提供了 Yii调试工具条 和 Gii代码生成器 以及 文档生成器 等高效开发工具。
集成了 Codeception 和 Faker,并与DB Migration相结合,提供了一个fixture框架,方便测试开发。
提供了一个简单应用模板和高级应用模板,适用于不同的开发场景,都可以帮助开发者尽快搭建起自己的应用。
2、YII2.0目录结构
1、基本版目录结构
2、高级版目录结构
对于高级应用而言,相当于有 backend frontend console 三个独立的Yii应用
公共目录
common:准确而言这里的公共目录应该是指common下面的所有文件config 就是通用的配置,这些配置将作用于前后台和命令行。
mail 就是应用的前后台和命令行的与邮件相关的布局文件等。
models 就是前后台和命令行都可能用到的数据模型。
vendor:三方依赖包库
前台的目录结构
其实,前台和后台是一样的,只是我们逻辑上的一个划分。 典型的, frontend 具有如下的一个目录结构:
<?php
defined('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();
命令行应用入口脚本
命令行应用的入口脚本是 path/to/digpage.com/yii 文件。这个文件被 init 脚本设为可执行的。
对比于Web应用的 index.php 入口脚本, yii 并没有太多的新东西,其中核心的东西根本就没变。
我们先来看看这个这个 yii 是什么?
首先,它没有扩展名,我们不好知道其具体类型。 但是从文件内容的第一行 #!/usr/bin/env php 来看,这是一个bash脚本。 第一行在告诉bash,也在告诉我们,这是一个使用PHP运行的脚本。
但第二行的 又清楚的向我们表明,这货其实也是个 PHP 文件,只是没有加上PHP后缀而已 。
接下来, define('STDIN') 和 define('STDOUT') 则为fcgi定义了标准输入和标准输出。
在各require语句中,由于 yii 的位置与 index.php 不同,是位于应用根目录下,所以目录结构上更简单些。
最后,在Yii应用跑起来后,还要获取其返回值,并以该返回值退出脚本,通知操作系统退出时的状态。
对于Windows系统而言,命令行的入口脚本仍然是 yii ,但是命令行下无法直接运行。所以, 细心的Yii为我们准备了一个 yii.bat 。这个文件会以 php yii 形式调用PHP来运行入口脚本 。
相关文章推荐
- 对于ThinkPHP入口文件以及模块目录结构的学习
- Yii应用的目录结构和入口脚本
- Android基础学习第一篇—Project目录结构
- Symfony学习--目录和入口
- PHP学习笔记(二) 了解PHP的基本语法以及目录结构
- Webkit学习目录结构
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
- YII Framework学习教程-YII目录结构-2011-11-11
- PHP学习---THINKCMF目录结构学习
- THINKPHP3.2学习笔记(1)目录结构
- 理解与学习linux 文件系统的目录结构
- 点滴学习Linux----Linux 标准目录结构
- ATS源码目录结构(Apache Traffic Server 学习笔记 3)
- 学习Unity3D第五天之脚本入门(选择结构和循环结构)。
- MVC进阶学习--个性化目录结构(一)
- 全文检索学习历程目录结构(Lucene、ElasticSearch)
- 学习笔记4-项目的目录结构与安装及启动过程分析
- Linux-CentOS7学习3_目录结构
- android学习日志02__HelloWorld 和 程序目录结构
- 【AngularJS学习笔记】开发时候的建议目录结构,基本开发步骤