您现在的位置是:首页 > PHP框架交流PHP框架交流
理解yii自动加载机制 yi框架自动加载
上善若水2022-01-06 12:17:14【PHP框架交流】
2050人已围观
简介理解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 session过期时间怎么设置 修改session默认过期时间
ThinkPHP6已经使用了一段时间,就是发现session特别容易过期,刚登陆不就就要重新登录,需要修改session过期时间,默认过期时间实在太短,不能忍,看看在哪修改session的过期时间吧!Thinkphp6定时执行 tp6如何使用定时执行脚本
Thinkphp6如何定时执行代码,tp6如何使用定时执行脚本,composer支持tinkphp6定时组件框架有哪些,在项目中经常会使用到定时脚本执行,但是相比较于laravel框架而言,thinkthinkphp6软删除 destroy与delete区别
thinkphp6软删除还是比较坑的,使用delete()无法删除触发模型事件,无法触发软删除,destroy与delete两者在使用上有有区别,来看看正确的使用软删除的操作,以及需要注意事项. 配置10个笑死人不偿命的笑话,发给你,足以让你笑着过周末了!
1.妻子想让老公早回家,于是规定:晚于23点回家就锁门。第一周奏效,第二周老公又晚归,老婆按制度把门锁了,于是老公干脆不回家了。 老婆郁闷,后经高人指点,修改规定:23点前不回家,我就开着门睡觉。老公大惊,从此准时回家。 可见制度的精髓不在于强制,而在于对被执行者利益的拉动。 2.小鸡问母鸡:可否不用下蛋,带我出去玩啊?母鸡道:不行,我要工作! 是因为你创造价值,淘汰是因为你失去价值。过去