类的访问方式有两种:

通过实例化对象访问

类成员访问

而访问的前提便是内存中有类的存在,所以需要提前将类加载至内存中。

1.手动加载

//类文件 Salary.php

class Salary{

public function Student(){

echo "Salary下面的Student方法";

}

}

?>

应用文件:useSalary.php

//$s = new Salary();会报错,因为useSalaty.php中间未定义Salary类

include_once 'Salary.php';//也可以使用require,通常使用_once,因为类不允许重名

$s = new Salary();

echo $s->Student();

?>

//加载类文件是一种比较消耗资源的方式,可以事先使用class_exists()函数来判定类是否存在,存在就不用加载,不存在才加载

if(!class_exists('Salary')){

//不存在:加载

include_once 'Salary.php';

}

//使用

$s = new Salary();

?>

2.自动加载

在PHP7之前使用的自动加载机制:利用系统提供的__autoload()函数,然后当系统需要使用类,而内存中又不存在的时候,系统就会自动调用__autoload()函数来加载类文件。

function __autoload($classname){//参数为类名:即当前需要访问的类的名字

//需要人为定义去哪加载,怎么加载

include_once $classname . '.php';//假定为当前目录下,类文件名字为:类名.php

}

//使用类:内存目前并没有

$s = new Salary();//系统发现内存没有Salary,所以调用__autoload()去加载

?>

//若在不同路径下

//定义自动加载

function __autoload($classname){

$abc_file = 'abc/' . $classname . '.php';//如abc/Salary.php

if(file_exists($c_file)){ //利用file_exists()判断文件是否存在

include_once $abc_file;

}

}

?>

在PHP7后,不建议使用__autoload()函数,而是使用一种注册机制,将用户自定义的函数,放到系统内部,使用spl_autoload_register(定义好的函数)。

function myself_autoload($classname){//与__autoload()类似

$abc_file = 'abc/' . $classname . '.php';//如abc/Salary.php

if(file_exists($c_file)){

include_once $c_file;

}

}

//此时,上述函数永远不会自动运行,除非将函数注册到系统内部

spl_autoload_register('myself_autoload');

?>

//可以定义多个方法

function wayone_autoload($classname){

function waytwo_autoload($classname){

}

//此时,上述函数永远不会自动运行,除非将函数注册到系统内部

spl_autoload_register('wayone_autoload');

spl_autoload_register('waytwo_autoload');

?>

推荐:php教程

php 类加载,关于PHP中类的加载相关推荐

  1. java类加载器顺序_java中类的加载顺序介绍(ClassLoader)

    1.ClassNotFoundExcetpion 我们在开发中,经常可以遇见java.lang.ClassNotFoundExcetpion这个异常,今天我就来总结一下这个问题.对于这个异常,它实质涉 ...

  2. 文件加载顺序_Java中类的加载顺序介绍(ClassLoader)

    Java中类的加载顺序介绍(ClassLoader) 1.ClassNotFoundExcetpion 我们在开发中,经常可以遇见java.lang.ClassNotFoundExcetpion这个异 ...

  3. java中类的加载及执行顺序

    为什么80%的码农都做不了架构师?>>>    类的加载顺序  什么时候类加载  第一次需要使用类信息时加载.  类加载的原则:延迟加载,能不加载就不加载. 触发类加载的几种情况:  ...

  4. java中的类加载器有,Java自定义的类加载器,java自定义加载,在java中类加载器有以...

    Java自定义的类加载器,java自定义加载,在java中类加载器有以 在java中类加载器有以下几种java虚拟机自带的加载器 1)根类加载器(Bootstrap,c++实现)2)扩展类加载器(Ex ...

  5. java类验证和装载顺序_java中类的加载顺序介绍(ClassLoader)

    转自:http://blog.csdn.net/eff666/article/details/52203406 1.ClassNotFoundExcetpion 我们在开发中,经常可以遇见java.l ...

  6. java 类加载器的理解及加载机制?

    通过 java 命令运行 java 程序的步骤就是指定包含 main 方法的完整类名以及一个 classpath 类路径,类路径可以有多个,对于直接的 class 文件路径就是 class 文件的根目 ...

  7. java类加载器可以从互联网加载,Java类加载器深入解析(2)

    在做Java开发时了解Java类加载机制是非常好的.而对类加载机制的基本理解对Java开发人员处理类加载器(ClassLoader)相关的异常也很有帮助. 类加载器委托机制 Java类的装载是通过类加 ...

  8. java中类的加载顺序介绍(ClassLoader)

    1.ClassNotFoundExcetpion 我们在开发中,经常可以遇见java.lang.ClassNotFoundExcetpion这个异常,今天我就来总结一下这个问题.对于这个异常,它实质涉 ...

  9. java枚举加载顺序_java 中类的加载顺序(转)

    1.虚拟机在首次加载Java类时,会对静态初始化块.静态成员变量.静态方法进行一次初始化 2.只有在调用new方法时才会创建类的实例 3.类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始 ...

最新文章

  1. BERT模型超酷炫,上手又太难?请查收这份BERT快速入门指南
  2. leetcode算法题--剪绳子
  3. 金融风控实战——不均衡学习
  4. SMS短信通API——(1)Java应用发送手机短信
  5. 三分钟看懂一致性哈希算法
  6. 系统架构设计师 - 信息安全技术
  7. 【超全指南】Java 8 中使用 Optional 处理 null 对象
  8. c语言怎么加分数,用C语言编程平均分数
  9. [VNC] 远程连接 Xfce4 桌面 tab 键不能自动补全
  10. 最长上升子序列o(nlogn)复杂度一种简单易懂的理解
  11. Installer - 使用Maven自动布署至外部Tomcat
  12. 清退117名博士、119名硕士!研究生“严出”成人才培养大趋势
  13. DotNetBar2使用实例(引用方法)
  14. html submit修改名称,HTML Input Submit name用法及代码示例
  15. 电源纹波怎么测量,纹波和噪声的区别
  16. (logN)²是O(N)的
  17. OceanBase发布“珊瑚计划”,让合作伙伴成为OceanBase成功的关键
  18. median函数 oracle9i,oracle10g学习笔记
  19. Servlet中ServletConfig接口和ServletContext接口的作用
  20. ChatGPT使用案例之自然语言处理

热门文章

  1. python封装exe 时间time问题_python模块之datetime
  2. 三宝机器人怎么充电_巨人通力导致吉祥三宝+36号故障怪现象的又一因素
  3. python turtle颜色rgb_turtle绘图总结
  4. python保留字的是_Python保留字
  5. C++返回char*第n个位置开始的子字符串
  6. QT示例:基于TCP 点对多Socket通讯(server,clients)
  7. QT环境配置:QT5.8.0与VS2013环境配置
  8. 图像处理与图像识别笔记(一)
  9. python多进程并发与pool多线程
  10. 《Pycharm操作和配置指南》这些不会,写Python肯定慢嘛