IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP笔记——Yii2学习笔记3(Yii2整体介绍) -> 正文阅读

[PHP知识库]PHP笔记——Yii2学习笔记3(Yii2整体介绍)

? ? ? ? 在实现了创建一个完全属于自己的空白页面之后,在进行下一步的逐步添加自己想要的内容之前,需要对yii2框架的整体目录有个大致的了解

参考:入门(Getting Started): 运行应用(Running Applications) - Yii 2.0 权威指南 - 文档 - Yii Framework 中文网

basic/                  应用根目录
    composer.json       Composer 配置文件, 描述包信息
    config/             包含应用配置及其它配置
        console.php     控制台应用配置信息
        web.php         Web 应用配置信息
    commands/           包含控制台命令类
    controllers/        包含控制器类
    models/             包含模型类
    runtime/            包含 Yii 在运行时生成的文件,例如日志和缓存文件
    vendor/             包含已经安装的 Composer 包,包括 Yii 框架自身
    views/              包含视图文件
    web/                Web 应用根目录,包含 Web 入口文件
        assets/         包含 Yii 发布的资源文件(javascript 和 css)
        index.php       应用入口文件
    yii                 Yii 控制台命令执行脚本

? ? ? ?这个上面的目录是Yii2框架basic版,最主要的核心目录,还有一些其他的目录,基本都是用到的各类功能才需要的扩展目录,如:tests(测试目录),mail(邮件功能目录),assets(资源控制),widgets(小部件),如不用这些功能,就非必要了。

应用静态结构

?这个图上,把Yii2的很多东西都写上去了,不了解的人一看就有点头疼,学习初期,我们可以把大多数的都去掉,最简单的页面,实际上可以只需要3个文件就行了

1.入口脚本

入口脚本有几种,网页的入口脚本就是web\index.php,命令行的入口脚本就是根目录下yii文件,入口脚本内容很简单,一般也很少修改,里面决定了加载哪个配置文件,以及启动语句。

<?php

// comment out the following two lines when deployed to production
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';  // 加载框架

$config = require __DIR__ . '/../config/web.php';  //指定配置文件

(new yii\web\Application($config))->run();  // 执行启动

2.配置文件

一般配置文件都在config目录下,根据配置文件,最主要就是决定启动哪个类文件,其他还有一些功能方面的配置,如果什么功能都不用,很多配置都是不需要的。默认的配置文件中,是无'defaultRoute' 这项的,框架默认的类名是site类,通过'defaultRoute' 的配置,就可以默认加载我们自己定义的类了,也可以不改默认,通过url来定向跳转到我们类,网页跳转就是这么实现的。

<?php

$params = require __DIR__ . '/params.php';
$db = require __DIR__ . '/db.php';

$config = [
    'id' => 'yii2study',
    'name' => 'Yii2-Study',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'aliases' => [
        '@bower' => '@vendor/bower-asset',
        '@npm'   => '@vendor/npm-asset',
    ],
    'defaultRoute' => 'login',  // 默认的配置文件中,无此项
    'components' => [
        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => '随机码',
        ],
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // 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,
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'db' => $db,
        /*
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
            ],
        ],
        */
    ],
    'params' => $params,
];

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => 'yii\debug\Module',
        // uncomment the following to add your IP if you are not connecting from localhost.
        //'allowedIPs' => ['127.0.0.1', '::1'],
    ];

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        // uncomment the following to add your IP if you are not connecting from localhost.
        //'allowedIPs' => ['127.0.0.1', '::1'],
    ];
}

return $config;

3.类文件

一般类文件,都在controllers目录下,类文件的文件名和类型必须一致,必须符合yii2框架的命名规范,遵守驼峰命名方式,即首字母大写,以Controller结尾。类名中,默认调用actionIndex执行函数。网页调用的类,一般都集成\yii\web\Controller类,指定不掉用布局文件。

<?php

namespace app\controllers;

class LoginController extends \yii\web\Controller
{
    // 这里设置影响整个Controller的所有action
    //public $layout = false;  // 不使用布局文件

    //public $layout = "single-layout"; //指定使用single-layout.php的布局文件

    public function actionIndex()
    {
        // 这里设置仅这个action有效
        $this->layout = false;  // 不使用布局文件

        // $this->layout = "layout1"; //指定使用layout1.php的布局文件
        return $this->render('index');
    }
}

在actionIndex执行函数中,决定了是否视图,以及加载哪个视图文件。如果不使用视图,可以直接在actionIndex函数中,用echo “内容”来输出结果。

<?php

namespace app\controllers;

class LoginController extends \yii\web\Controller
{

    public function actionIndex()
    {
        echo "Hello World!";
}

到这里,就是最简单的Hello World,就完成了。

在yii2的框架的MVC模式中,只有C是必须的,不可或缺的,M和V都是根据实际情况来加载的。下面我们进一步来说明,如果决定加载视图的操作。

4.视图文件

一般视图文件,在views目录下,以类名为目录名,在对应的类名目录下的视图文件。在类函数中,通过不同的调用函数,决定了加载视图的方式,先简单的按照示例中的方式。

<?php
/* @var $this yii\web\View */
?>
<h1>home/index</h1>

<p>
    You may change the content of this page by modifying
    the file <code><?= __FILE__; ?></code>.
</p>

5.模型文件

一般模型文件,在models目录中,在yii2框架中,model文件并不是简单的数据库的操作,也可以是表单的模型定义,具体的后期再讲。

6.模块

yii2中的模块通常是指包含了完整独立功能的MVC的集合。这个属于yii2的高阶使用技巧了。


最终,说明一下Yii2框架中,核心MVC各自常规使用方式。

M=》Model

主要负责实现数据库的交互,数据模型定义,数据输出。

V=》View

主要负责页面展示,前端用户交互。

C=》Controller

主要负责从Model处获取数据,按照业务需求,进行逻辑处理,最终交付View调用。


最后,说明一下,如何学习Yii2框架?

学习一款框架

第一步,当然是先部署好框架的运行环境,让整个框架可以运行起来。

第二步,通过官方网站的基本介绍说明,了解框架的运行模式,取出最核心的部分,实现Hello World。

第三步,切割框架的各个功能模块,基于基础的Hello World,对各个功能模块,从简单开始,进行逐一学习,我是建议1视图,2模型,3控制。

第四步,基于核心的功能模块整合,实现基础功能,例如基于MVC实现权限控制。

第五步,选择几个开发中较为常见的专题进行研究,如RESTful模式,API模式,控制台模式

第六部,针对各种模式、专题,实现常用场景的功能,积累各种示例代码。

到这里,基本就算是掌握了这款框架了。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 15:46:33  更:2021-12-18 15:46:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:43:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码