PHP

PHP无需通过require_once实现类的自动加载方法

发布于 2020-02-23 23:13:22

通常我们PHP在使用另一个PHP文件函数或方法的时候,需要通过require_once对需要使用的文件进行加载,那么我们写一个autoload.php实现对同一类型的文件自动加载。

举例说明

目录结构如下↓
test (工程名称)
   /app
      /QueryPhone.php
   /index.php

不使用自动加载时:

QueryPhone.php
<?php
 
class QueryPhone {
    
    public static function query() {
 
        echo 'query phone';
 
    }
    
}
 
?>
index.php
<?php
 
require_once 'app/QueryPhone.php';
QueryPhone::query();
 
?>

为了使用QueryPhone中的函数,需要在文件头部通过require_once引入需要的文件。如果依赖多个文件,则要引入多个。


使用自动加载:

假设目录结构如下↓

test (工程名称)
   /app
      /QueryPhone.php
   /index.php
   /autoload.php  (为了使用自动加载,新追加的文件)
QueryPhone.php(追加了命名空间)
<?php
namespace app;
 
class QueryPhone {
    
    public static function query() {
 
        echo 'query phone'; 
    } 
}
 
?>
index.php(只引入autoload.php就可以了,以后即使再追加其他的依赖,仅此一个也够了)
<?php
 
require_once 'autoload.php';
app\QueryPhone::query();
 
?>
autoload.php
<?php
 
class autoload {
 
    public static function load($className) {
 
        $fileName = sprintf('%s.php', str_replace('\\', '/', $className));
        if (is_file($fileName)) {
            require_once $fileName;
        }
    }
 
}
 
spl_autoload_register(['autoload', 'load']);
 
?>
0 条评论

发布
问题