深入学习Yii2.0之--目录结构和入口脚本

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、基本版目录结构

    142207_zOta_2704357.png

2、高级版目录结构

    142803_8mPW_2704357.png

    对于高级应用而言,相当于有 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来运行入口脚本 。

转载于:https://my.oschina.net/airlines/blog/1518402

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值