您现在的位置是:首页 > PHP框架交流PHP框架交流
理解yii自动加载机制 yi框架自动加载
上善若水2022-01-06 12:17:14【PHP框架交流】 1465人已围观
简介理解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)
相关文章
随机图文
-
经典五条笑话,笑到肚子疼!
1.老夫妇去拍照,摄影师问:“大爷,您是要侧光,逆光,还是全光?',大爷腼腆的说:“我是无所谓,能不能给你大妈留条裤衩?'2.两个饺子结婚了,送走客人后新郎回到卧室,竟发现床上躺着一个肉丸子!新郎大惊,忙问新娘在哪?肉丸子害羞的说:讨厌,人家脱了衣服你就不认识啦!3.四只老鼠吹牛:甲:我每天都拿鼠药当糖吃;乙:我一天不踩老鼠夹脚发痒;丙:我每天不过几次大街不踏实;丁:时间不早了,回家抱猫去 -
linux centos 安装jenkins
centos 安装jenkins,我们都知道一般项目都是运行再服务器里面,我们本地的window可能和生产环境不一样,着手对centos安装jenkins. 1.jenkins是java开发的运行必须 -
PHP8.1新特性 Never 返回类型 返回类型应用场景
PHP8.1新特性 Never 返回类型 返回类型应用场景,有时候一个控制器里我们会使用die(),再函数中就能使用Never类型作为其返回值类型。 function redirect(string -
Maatwebsite\Excel 读取导入excel转为数组数据显示不全
在laravel中读取excel转换为数组进行数据处理,发现转换为的数组内只有一条记录,其他记录丢失,Maatwebsite\Excel 读取导入excel转为数组数据显示不全,发现网上给出的代码掉了