您现在的位置是:首页 > PHP框架交流PHP框架交流
理解yii自动加载机制 yi框架自动加载
上善若水2022-01-06 12:17:14【PHP框架交流】 1489人已围观
简介理解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、在街上撞着前女友,实在不想停下来和她交谈,于是我就装作在打电话的样子。。。不料她径直冲我走来说:你在假装打电话吧!?“抱歉稍等一下。”我对不存在的通话 -
幽默笑话:小时候的一个夏天,家里装了空调
1、给幼儿园的儿子买了一本小小的字典,准备教他怎么用。儿子很喜欢字典,走到哪带到哪,我问他:儿子,你大字不认识几个,怎么随身带着字典啊?儿子说:看以后幼儿园谁敢欺负我?谁欺负我,我拍他!2、媳妇是个急脾气,她让我帮她打印一张美颜照片,看着打印机里的相纸哼哼唧唧地蜗速往出爬,媳妇伸手往出慢慢拉,照片里的她下巴都被拉长了。。3、还在睡觉,电话响了,你不知道今天要上班吗?一看来电显示,我急忙跳下 -
git 分支开发dev,release本地提交代码总结
git分支是个好东西,可以在自己分支上开发,然后将代码合并到其他分支上便于管理,首次接触分支还是有点迷糊,结合公司代码提交规范,自己回现公司代码提交规范,理清楚的话其实还是蛮简单的.首先准备一个码云仓 -
phpstorm如何找回代码 利用local history还原已经被删除的代码
phpstorm如何找回代码,php代码已经删除并且已经清空回收站如何还原找回丢失的代码,利用local history还原已经被删除的代码,不得不佩服phpstorm的强大功能.前些天在写代码的时候