PHP面向对象编程(3.自动加载类)

PHP面向对象编程(3.自动加载类)

自动加载类,就是按需加载,实例化类时自动加载类。

需求分析

在实际开发中,一个文件需要引入多个类,当然,你逐个类引入完全OK,能达到目的;“懒”是科技进步的原动力。

解决方案

实际开发中,一个类对应一个文件,所以可以在a.php文件中,存入类与文件路径的对应关系,在需要的时候引入即可。

代码如下:

1
2
3
4
5
6
7
8
<?php
//---a.php 文件

// 类名和路径的映射关系数组
$class_map = array(
'L' => './L.php',
'X' => './X.php'
);

以下为自动加载,实例化代码:

1
2
3
4
5
6
7
8
9
10
11
<?php
require './a.php';
// 自动加载函数
function __autoload($class_name) {
// 全局变量
global $class_name;
require $class_map[$class_name];
}

// 实例化L类
$obj = new L();

spl_autoload_regitser

spl_autoload_register函数作用,自主定义自动加载函数,相当于将 __autoload函数替换为你定义的函数,达到自动加载的目的。(也可以定义某个类的成员函数/静态成员函数为自动加载函数)

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
header('Content-Type:text/html;charset=uft-8');

require('./a.php')
// 将 my_autoload() 定义为自动加载函数
spl_autoload_register('my_autoload');
// 自动加载函数
function my_autoload($class_name) {
global $class_name;
require $class_map[$class_name];
}
// 实例化 L 类
$obj = new L();
文章目录
  1. 1. PHP面向对象编程(3.自动加载类)
    1. 1.1. 需求分析
    2. 1.2. 解决方案
    3. 1.3. spl_autoload_regitser
本站总访问量 | 本页面被访问 | 您是第位小伙伴

© XueSi博客 版权所有 备案号 : 赣ICP备19008485号-1