类的加载(概念和步骤)|学习笔记

简介: 快速学习类的加载(概念和步骤)

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第一阶段类的加载(概念和步骤)】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/711/detail/12669


类的加载(概念和步骤)

 

内容介绍:

一、概念

二、步骤

 

使用类的前提是类必须要在内存里存在,每次使用类之前都定义了类,所以不存在任何的问题,但是在真实的开发里不会这么用,因为定义一个类就是一个类,不会在这个类里面再去做当前类的使用之类的代码,这样不符合代码书写规范,所以类就是独立的类文件。此时想要用的话,有可能会接触到很多的类,需要加载类。本节目标就是理解类的使用机制,掌握类的加载方式和原理,解决使用类的问题。

 

一、概念

类的加载:类的访问必须保证类在内存中已经存在,所以需要在用类之前将类所在的 PHP 文件加载到内存。

1、类的加载分为两种

(1)手动加载:在需要使用类之间通过 include 将包含类的文件引入到内存,在大型项目里非常费劲,因为加载的类很多,此时不方便,要书写太多的代码。

(2)自动加载:提前定义好类结构和位置,写好引入类文件代码,在系统需要类而内存不存在的时候想办法让写好的加载类的代码执行(自动加载是自动运行写好的加载类的代码)。

真实开发中因为类文件很多,所以通常都会使用自动加载来节省开发工作量。

2、自动加载有两种方式都可以实现

(1)魔术函数\_ \_autoload(): 系统自动调用,需要传入类名,在函数内部实现类的手动加载,在 PHP 里不再建议使用。

function_autoload($classname){

#找到对应的文件路径和命名规范,手动加载

}

(2)自定义函数:自己定义类的加载实现,然后通过 spl_autoload_register 注册到自动加载机制(可以注册多个自动加载)

#自定义类加载函数

function 自定义函数($classname){

#找到对应的文件路径和命名规范,手动加载

}

#注册自动加载

sp1_autoload_register(自定义函数名字);

3、自动加载要求在声明类的时候有良好的规范

(1)类名与文件名一致:类名.php (现在较多使用)或者类名.class.php,注意文件里只有这个独立的类。

(2)类文件分类放好,不同结构、解决不同业务的类应该放在不同文件夹里分层管理,主要是为了好维护,并不是为了实现自动加载。

 

二、步骤

1、定义类文件

(1)类文件是独立文件,除了类之外不包含其他代码

(2)类文件通常是一个类一个文件

2、确定加载类型,写好加载代码

(1)手动加载:主动在调用前手动加载即可

(2)自动加载_autoload(): 实现好自动加载函数,在使用类之前声明好

(3)自动加载spl_autoload_register(): 自定义加载函数,在使用类之前通过 spl 注册

3、在明确类能够通过自己写的加载代码加载时,可以直接使用类

(1)能找到:实现类的加载和使用

(2)找不到:报错类无法找到

相关文章
|
小程序 API
钉钉小程序端https和http发送的实例代码
钉钉小程序端https和http发送的实例代码
593 1
|
7月前
|
机器学习/深度学习 存储 API
飞桨x昇腾生态适配方案:06_算子适配举例
本节详细解析了Paddle-API与CANN-Kernel之间的差异及适配策略,涵盖三种主要场景:参数缺失或不对应、数据类型不匹配以及layout转换。针对不同问题提出具体解决方案,如通过默认赋值或计算补充参数、使用`Cast`操作转换数据类型、借助`Transpose`调整数据布局等。同时,以ReluGrad和nll_loss算子为例,深入说明参数对齐、数据类型转换及转置操作的实现流程,为开发者提供清晰的适配指导。
200 0
|
搜索推荐 计算机视觉
赠人玫瑰,手有余香,5款实用软件推荐
今天推荐5款十分小众的软件,知道的人不多,但是每个都是非常非常好用的,有兴趣的小伙伴可以自行搜索下载。
134 0
|
前端开发 JavaScript 数据可视化
IT圈茶余饭后的“鄙视链”——看看前端开发有多难
IT圈茶余饭后的“鄙视链”——看看前端开发有多难
2337 0
|
人工智能 自然语言处理 搜索推荐
通义大模型落地手机芯片!离线环境可流畅运行多轮AI对话
通义大模型落地手机芯片!离线环境可流畅运行多轮AI对话
446 0
|
存储 Linux 开发工具
Linux 基础(从环境搭建到基础命令)
Linux 基础(从环境搭建到基础命令)
|
消息中间件 SQL NoSQL
Flink mongodb支持CDAS 到那些下游?如果是不定格式的如何处理呀?mongodb的动态字段。
Flink mongodb支持CDAS 到那些下游?如果是不定格式的如何处理呀?mongodb的动态字段。【1月更文挑战第19天】【1月更文挑战第94篇】
177 6
|
数据采集 存储 监控
谈谈基于DGI框架的数据治理
在大数据和数据科学时代,大多数组织都意识到数据在加速结果方面的潜在力量。然而,大多数人面临的挑战是,不断变化的客户期望和相关需求,以确保准确和可访问的数据,以指导决策,以满足客户的不同需求。
谈谈基于DGI框架的数据治理
|
存储 算法
算法刷题第八天:广度优先搜索 / 深度优先搜索--2
空间复杂度:O(min(m,n)),其中 m 和 n 分别是两个二叉树的节点个数。空间复杂度取决于递归调用的层数,递归调用的层数不会超过较小的二叉树的最大高度,最坏情况下,二叉树的高度等于节点数。
261 0
算法刷题第八天:广度优先搜索 / 深度优先搜索--2