类延迟加载

CentOS 7下glibc升级到2.28的保姆级避坑指南(含GCC 7.3.1编译配置) 本文详细介绍了在CentOS 7系统中将glibc升级到2.28版本的完整流程,包括GCC 7.3.1的编译配置、环境变量设置、glibc编译的细节处理以及生产环境验证。文章特别强调了风险控制和避坑技巧,适用于需要提升系统兼容性的企业级用户。 阅读详情

在php中,想要实例化一个类,必须先在实例化之前加载类:

require ..../class1.php  或者 include ..../class1.php
require ..../class2.php  或者 include ..../class2.php
$try = new class1;
$try1 = new class2;

这样的做法使即时不会马上用到的类都要一次性全部加载,导致效率下降

php5以后,引入函数spl_autoload_register(),现在大多数框架都有使用,使用spl_autoload_register之前需要先设置一个自动装载函数,规定了参数与实际类路径的关系及加载方式。

function autoload($class){
require (路径/class.php);
}

然后将这个函数注册到spl函数中

spl_autoload_register(“autoload”);
这样,当实例化一个未加载的类时,会触发spl_autoload_register函数,进而触发autoload函数,将class加载,这就是所谓的类延迟加载。

Yii2中是如何使用自动加载的?这个先定位到入口文件的index.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');
//Yii::setAlias('@common', '@app/common/');
$config = require(__DIR__ . '/../config/web.php');
(new yii\web\Application($config))->run();

autoload.php是第三方的类加载,只要保证Yii.php在最后面,就可以确保其可以将自己的autoloader插入到整个autoloder 栈的最前面,从而在需要时最先被调用。

再来看看Yii.php的

class Yii extends \yii\BaseYii
{
}
spl_autoload_register([‘Yii’, ‘autoload’], true, true);
Yii::$classMap = require(DIR . ‘/classes.php’);
Yii::$container = new yii\di\Container();

注册的是BaseYii.php中的autoload函数,然后Yii将 calsses.php 这个文件作为一个映射表保存到 Yii::$classMap 当中。这个映射表,保存了一系列的类名与其所在PHP文件的映射关系。

最后看一下auto函数的奥秘:

public static function autoload($className)
{
if (isset(static::$classMap[$className])) {
$classFile = static::$classMap[$className];
if ($classFile[0] === '@') {
$classFile = static::getAlias($classFile);
}
 } elseif (strpos($className, '\\') !== false) {
$classFile = static::getAlias('@' . str_replace('\\', '/', $className) . '.php', false);
if ($classFile === false || !is_file($classFile)) {
return;
}
 } else {
return;
}

include($classFile);

if (YII_DEBUG && !class_exists($className, false) && !interface_exists($className, false) && !trait_exists($className, false)) {
throw new UnknownClassException("Unable to find '$className' in file: $classFile. Namespace missing?");
}
}

这个函数的大意就是看参数如果是一个字符串,就搜索看看有没有这个别名,找到对应路径,如果参数是一个路径,就直接找到路径,否则就报错!

ADRC自抗扰控制:工程抗扰“黑科技”,附C代码实战! 自抗扰控制(ADRC)是一种革新性的强鲁棒控制策略,通过主动估计和补偿系统扰动,无需精确数学模型即可实现优异控制性能。本文详细解析ADRC三大核心组件:跟踪微分器(TD)实现指令柔化,扩张状态观测器(ESO)实时估计总扰动,非线性状态反馈(NLSEF)完成动态补偿。针对二阶系统,文章提供完整的参数设计方法和C语言实现框架,包括关键函数fhan和fal的代码实现。ADRC将复杂对象"线性化"为积分器串联系统,显著提升抗扰能力,特别适用于电机控制、飞行器姿态等存在模型不确定性和强干扰的场景。 阅读详情

相关推荐

STK传感器约束设置保姆级教程:从方位角到传播延迟,手把手教你避开新手常见坑

本文详细解析了STK传感器约束设置的关键技巧,涵盖方位角、仰角、高度及传播延迟等核心参数。通过实战案例和代码示例,指导用户避开常见误区,优化卫星通信和航天任务仿真精度,特别适合STK新手和需要提升传感器配置效率的工程师。

weixin_33701294的博客 393

类的延迟加载

什么是类的延迟加载 类的延迟加载就是当你的程序用到某个程序的时候,再对这个类进行加载。也就是说,刚开始的时候程序可能会用到某个类,但这个可能代表了暂时并用不上。 用不上的时候不加载,等用上了的时候再加载。 这里看上去似乎,延迟加载就是将需要加载的类延迟到了需用用到它的时候再加载,也可以这么理解。但是并不仅仅如此。 首先,上面那句的那个作用是很有用的,因为不至于一开始很慢,就像打开一

鱼火 1788

Qt6.8.0(win64)安装教程

启动 Visual Studio 2022 Community,选择 “继续但无需代码” 运行,然后打开Option设置,Add一条版本配置,Location 选择 D:\Qt\6.8.0\msvc2022_64\bin\qmake,点击确定。我是win11系统,所以选择windows版,下载路径二选一即可。方案1:默认情况下,额外勾选图中两个组件(总共40多G)方案2:按图中自定义勾选组件(总共5.8G)选择Custom Installation。我选的方案2,总共5.81G。

D4G1TIAO的博客 9074

Spring(二)延迟加载、生命周期、面向切面、事务

延迟加载、Bean的生命周期、AOP、@Transactional

HK的博客 1855

用于可靠的钙钛矿薄膜瞬时光致发光模拟的拟合程序

简介 对光激发后的电荷载流子动态的研究对于确定太阳能电池的几个特性至关重要,例如,体和界面重组的数量以及向电荷传输层转移过程的速度。 瞬态光致发光(trPL)是用于研究这些特性的最流行的表征方法之一。 该实验是通过在样品上照射几纳秒的激光脉冲,并记录一段时间内的发光情况来进行的。辐射性重组的光生电荷载流子将引起太阳能电池的光子发射,而非辐射性重组的电荷载流子将不会对发光作出贡献。因此,可以测量到强度随时间递减的光致发光瞬态。(见图1表示trPL的测量和它的输出)。 图1. 一...

FluximAG的博客 2363

华为OD机试 - 小扇和小船的数字游戏 - 二进制(Python/JS/C/C++ 2024 C卷 200分)

二进制表示:任何数 n 的二进制表示中,要找到下一个有相同数量的1的数,我们需要在最低位的0后面的最低位的1进行操作。右侧交换法则:找到右侧的第一个0,位于第一个1的左边,将这个0变成1(提升这个位),并将这个1变成0(下移这个位)。调整尾部1:为了得到最小的数,将所有低于已交换的1的位重置,使得所有1尽可能靠右。

学Java,找哪吒 1162

PHP类的延迟加载,PHP类延迟加载机制原理

PHP中加载一个类,必须使用require 或者 include把类文件包含进来,才可以实例化类,我们比较传统的方法在使用的时候就是一次性的把所需要的类文件全部进行require,PHP5之前是这么干的,PHP5之后引入了一个函数spl_autoload_register,欲注册的自动装载函数。如果没有提供任何参数,则自动注册autoload的默认实现函数,很多框架中也引入了这个类延迟加载机制,有...

weixin_34303763的博客 395

ArcGIS Pro 制作这种地图海报

ArcMap 版本与 ArcGIS Pro 版本的制图功能相差太多,无论从美观上还是制图效率都远远优于 ArcMap,用了一段时间的 ArcGIS Pro ,真心推荐有条件的大家赶紧试一试!一个软件也能搞定一张不错的海报哦!----吐槽:好的设计真的是门花时间的活,这个教程大概花了我7小时左右,我都忘了我自己教程中截图多少张了!(可能是我速度太慢了)测试数据:阿里云盘分享-----北极海冰数据.https://www.aliyundrive.com/s/SUhsnqfkmXh。

J_Giser的博客 1430

请解释PHP中的延迟加载(Lazy Loading)及其在算法优化中的应用。

在PHP中,延迟加载(Lazy Loading)是一种设计模式,它的主要思想是在需要时才进行对象的创建或资源的加载,而不是在程序启动时或之前。这种模式对于优化程序性能和提高响应速度特别有用,尤其是在处理大量数据或需要消耗大量资源的对象时。总的来说,延迟加载是一种有效的优化策略,可以帮助我们提高程序的性能和响应速度。然而,它也需要谨慎使用,以避免过度优化和不必要的复杂性。在PHP中,延迟加载通常与对象的创建、数据库查询、文件加载等操作相关。

长风破浪会有时的博客 410

18、动态系统响应分析

本文系统地介绍了动态系统响应的分析方法,涵盖传递函数建模、特殊输入下的响应特性(如脉冲和阶跃响应)、终值与初值定理的应用、系统直流增益的计算,并深入探讨了一阶和二阶系统的时域特性。通过实例分析与MATLAB仿真,展示了不同参数对系统行为的影响。文章还总结了系统响应在控制设计与故障诊断中的实际应用,并展望了多变量、非线性及实时响应分析的未来研究方向。配合流程图,提供了清晰的系统分析与设计路径。

kite3的博客 143

TVS 管击穿电压与钳位电压的工程解析

TVS二极管的核心参数击穿电压(VBR)和钳位电压(VC)常被混淆,但二者具有本质区别。VBR是

硬核科技 480

Spring框架中@Lazy延迟加载原理和使用细节

目录 一、@Lazy延迟加载原理 1.延迟加载原理 1.1 @Lazy三种配置方法 1.2 @ComponentScan配置延迟加载 1.3 加载原理 2.延迟加载实现原理 2.1 AbstractApplicationContext 2.2 DefaultListableBeanFactory 二、使用细节 1.@Lazy失效实例 1.1 Controller非延迟加载类 1.2 Service延迟加载类 1.3 结果输出 2.@Lazy起效实例 2.1 修改的Control

Armyyyyy丶的博客 2万+

关于“为爱发电”的一些说明~~

专栏教学资料+工程文件

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 2676

Hibernate 类的延迟加载 集合的延迟加载 单端的延迟加载

hibernate延迟加载有以下三种: 类的延迟加载: get方法没有延迟加载 load方法默认有延迟加载。可以在配置文件中进行配置 使用lacy是否启用延迟加载。 延迟加载必须在同一个session中。session关闭了就不会有延迟加载。 集合的延迟加载: 通常是在一对多和多对多关系中使用。 使用load方法的时候会有延迟加载但是还是受到 ...

Java修炼者的博客 144

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

理解Yii2类的延迟加载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/liuzp111/article/details/53231508目录(?)[+]Yii的类自动加载机制在Yii中,所有类、接口、Traits都可以使用类的自动加载机制实现在调用前自动加载。Yii借助了PHP的类自动加载机制高效实现了类的定位、导入,这一机制兼容 PSR-4 的标准。在Yii中,类仅在...

罗罗罗罗罗罗健 477

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Yii框架之--类的延迟加载实例说明

类的延迟加载 (lazy loading)以例子的方式解释现有三个类,Class1.php、Class2.php、index.php 在index中:require('Class\Class1.php'); require('Class\Class2.php'); $is_girl = $__GET['sex'] == 0?ture:false; if($is_girl){

zhenglouji9184的博客 703

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

PHP类延迟加载机制原理

PHP中加载一个类,必须使用require 或者 include把类文件包含进来,才可以实例化类,我们比较传统的方法在使用的时候就是一次性的把所需要的类文件全部进行require,PHP5之前是这么干的,PHP5之后引入了一个函数spl_autoload_register,欲注册的自动装载函数。如果没有提供任何参数,则自动注册autoload的默认实现函数,很多框架中也引入了这个类延迟加载机制,有

咖啡如同生活的专栏 3284

Hibernate的延迟加载(2)——类的延迟加载

在配置文件设置延迟加载 控制延迟加载,默认为true -->     Session的Get()方法没有延迟加载效果 @Test public void queryGet(){ Session session = HibernateUtils.getSession(); Transaction tx = session.beginTrans

qq_29631069的博客 245

fileservice 类代码放哪里_延迟加载代码真的可以提高性能?

您见过那些具有许多属性的巨大物体吗?这些域对象由于不希望从数据库中检索太多信息而正在使用延迟加载?我敢打赌,您有这种可疑的乐趣。今天,我想分享一下我对它们的印象: 使用延迟加载应被视为一种代码味道!让我解释一下自己:· 延迟加载意味着有时您不需要某个对象的某些属性。这些属性将在不同的上下文中是必需的。这是否意味着您要根据上下文构建不同的对象?· 使用此对象的功能肯定知道太多。它知道对象的API,并...

weixin_39900023的博客 72

利用ViewStub类来延迟加载视图

在设计视图时,有时会考虑到某些视图的可见性是依赖于用户的操作或者运行设备的具体环境的。 此时你会如何设计?仅仅是改变View的visible属性? 我们先来看看ViewStub的介绍:      ViewStub是一个不可见、不占空间(zero-sized)的控件,它可以用来在运行时延迟加载视图资源。只有当我们将ViewStub的可见性设为true,或者调用inflate()方法,它的视图资

小村夫 的专栏 1624

自定义延迟加载类

延迟加载类 public class LazyLoader<TModel> where TModel:class { TModel _data; Func<TModel> _loadDataFunc = null; bool _loaded = false; public LazyLoa...

weixin_33749242的博客 112

ViewStub类延迟加载

在设计视图时,有时会考虑到某些视图的可见性是依赖于用户的操作或者运行设备的具体环境的。 此时你会如何设计?仅仅是改变View的visible属性? 我们先来看看ViewStub的介绍:      ViewStub是一个不可见、不占空间(zero-sized)的控件,它可以用来在运行时延迟加载视图资源。只有当我们将ViewStub的可见性设为true,或者调用inflate()方法,它的视图资

u012075083的博客 356

SharePoint JS延迟加载类(SP.SOD)介绍

http://www.ilovesharepoint.com/2010/08/sharepoint-scripts-on-demand-spsod.html

shrenk的专栏 3602

单例设计模式-静态内部类-基于类初始化的延迟加载解决方案及原理解析

刚刚线程1看不到线程0的重排序,我们创建一个类,这个方案是使用静态内部类来解决,一会我们也会分析一下原理, 我们创建一个静态内部类,静态内部类的代理模式,JVM在类的初始化阶段,也就是class被加载后,并且被线程使用之前, 都是类的初始化阶段,在这个阶段会执行类的初始化,那在执行类的初始化期间呢,JVM会去获取一个锁,这个锁可以同步 多个线程,对一个类的初始化,也就是绿色的部分,基于...

Leon_Jinhai_Sun的博客 1038

知识储备--记录yii核心技术,类的延迟加载(lazy loading)

都说Yii速度快,快是快,单是为什么快呢? 因为yii用了一个技术叫做类的延迟加载,这个东西被YII玩的惟妙惟肖。 function auto_loader($class){ require('class\\'.$class.'.php'); } spl_autoload_register('auto_loader'); // switch($level){ case

guacuo1042的博客 538

Swift基础 类的属性与特殊方法(监听、延迟加载)

类的willSet()和didSet() 通过给类的属性添加willSet()和didSet()方法,可以给类的属性增加观察者。其被设置的新的属性值,如果不进行重命名的话,就是默认名newValue。 static var locationMSVersion : NSNumber = 0 { didSet{ if onlineMSVersion != 0 { compareMSVersion() }

乐事派的专栏 557
下一篇: liunx实用操作
jj_jameholl
博客等级 码龄10年 5粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值