您现在的位置是:首页 > PHP框架交流PHP框架交流
理解yii自动加载机制 yi框架自动加载
上善若水2022-01-06 12:17:14【PHP框架交流】
2076人已围观
简介理解yii自动加载机制,yii入口文件有引入两个自动加载,一个是composer自带的,一个是yii框架的自动加载文件,很多时候正是yii的自动加载机制才可以顺利将文件引入.来分析下yii自动加载.
理解yii自动加载机制,yii入口文件有引入两个自动加载,一个是composer自带的,一个是yii框架的自动加载文件,很多时候正是yii的自动加载机制才可以顺利将文件引入.来分析下yii自动加载.
1. 首先分析yii web下的入口文件
// 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();
yii引入了composer的自动加载文件,其次引入的自己的加载文件,这个文件超级重要.
然后就新建了一个Application 这个app会被设置进去我们常使用的Yii::$app中;
在测试类自动加载中 我尝试再注释Application发现.
new app\controllers\CController();//报错 报类无法找到
(new yii\web\Application($config))->run();
new app\controllers\CController();//报错 可以正确加载此类
在想Application也对加载也做了特殊处理吗,Yii.php加载居然不能自动引入这个类.
继续往下看,Application会走Yii.php
autoload方法,而yii\web\Application
是有预定义到Yii::$classMap
中就能顺利找到Application
,然后Application构造器会将config的一些配置配置进Application,其中就包括将config数组的中basePath
路径地址当做别名赋值到@app
,而再未进行实例话Application时类无法找到,而实例化或@app
是有值了,可以顺利找到地址,拼接出真实路径,然后include,所以又能正确引入了.
参照yii自动加载写了个简单的demo,有需要的可以产考 https://gitee.com/fierykylin/yi/tree/v1.0.0
Tags: yii
很赞哦! (0)
相关文章
随机图文
ThinkPHP6.0 数据集
数据集模型的select查询方法返回数据集对象 think\model\Collection,该对象继承自think\Collection,因此具有数据库的数据集类的所有方法,而且还提供了额笑的肚子痛的15个诙谐段子:妙趣横生,一个比一个搞笑!
一、老爸喜欢钓鱼,所以钓竿很多!一个星期前,大伯来了,说借钓竿去钓鱼,刚好爸爸不在,我忙着打游戏,就说,大伯,等我找到给你送去哈。一个星期过去了,我突然想起了钓竿还没送过去,拿着钓竿就去了大伯家。大伯看着我手里的钓竿说,你让那些鱼多活了一个星期!二、狙击手小李,在狙击比赛中获得一等奖,回来以后,好友问他:“哇,你真厉害,趴在雪地里两个小时,一动都不动,你这定力怎么练出来的?”三、小时候眼睛PHP8.2新特性 析取范式 (DNF)类型 允许 null、false 和 true 作为独立类型 Traits 中的常量
PHP8.2新特性析取范式(DNF)类型,DNF类型允许我们组合union和intersection类型,遵循一个严格规则:组合并集和交集类型时,交集类型必须用括号进行分组。1.析取范式thinkphp6验证规则失效 thinkphp6Validate验证器使用方法注意事项
今天在使用thinkphp6验证规则时遇到一些坑,导致验证规则始终无法生效,要不就重复验证,要不就验证失效简直心态爆炸,可能是自己用法不正确吧,来看看使用心得吧. 首先来看看正确的验证写法class