


Let's talk about PHP's autoLoad automatic loading mechanism_PHP tutorial
How to use __autoload 1:
The most commonly used method is to find the class file based on the class name, and then require_one
function __autoload($class_name) {
$path = str_replace('_', '/', $class_name);
require_once $path . '.php';
}
// The Http/File/Interface.php file will be automatically loaded here
$a = new Http_File_Interface();
This method The advantage is that it is simple and easy to use. Of course, there are also disadvantages. The disadvantage is that the class name and file path are forced to be agreed. When the file structure is modified, the class name must be modified.
How to use __autoload 2 (direct mapping method)
$map = array(
'Http_File_Interface' => 'C:/PHP/HTTP/FILE/Interface.php'
);
function __autoload($class_name) {
if (isset($map[$class_name])) {
require_once $map[$class_name];
}
}
// C:/PHP/HTTP/FILE/ will be automatically loaded here Interface.php file
$a = new Http_File_Interface();
The advantage of this method is that the class name and file path are only maintained with a mapping, so when the file structure changes At this time, there is no need to modify the class name, you only need to modify the corresponding item in the mapping.
The disadvantage of this method compared to the previous method is that it is very troublesome to maintain this mapping when there are too many files. Maybe at this time you will consider using json or a separate file for maintenance. Maybe you would think of using a framework to maintain or create such a mapping.
spl_autoload
The biggest flaw of __autoload is that it cannot have multiple autoload methods
Okay, think about the following scenario, your project references If you have copied someone else's project, your project has an __autoload, and someone else's project also has an __autoload, so the two __autoloads conflict. The solution is to modify __autoload to become one, which is undoubtedly very cumbersome.
Therefore, we urgently need to use an autoload call stack, so that the autoload series functions of spl appear. You can use spl_autoload_register to register multiple custom autoload functions
If your PHP version is greater than 5.1, you can use spl_autoload
First understand several functions of spl:

spl_autoload is the default implementation of _autoload(), it will look for $class_name(.php/.inc) in include_path
Spl_autoload implements automatic loading:
/*http.php*/
class http
{
public function callname(){
echo "this is http";
}
}
/*test.php*/
set_include_path("/home/yejianfeng /handcode/"); //Here you need to put the path into include
spl_autoload("http"); //Look for /home/yejianfeng/handcode/http.php
$a = new http();
$a->callname();
Spl_autoload_register
Register the function into the SPL __autoload function stack, look at an example directly:
/*http.php*/
class http
{
public function callname(){
echo "this is http";
}
}
/*test.php*/
spl_autoload_register(function($class){
if($class == 'http'){
require_once("/home/yejianfeng/handcode/http.php");
}
}) ;
$a = new http();
$a->callname();
spl_autoload_call
Call spl_autoload_register to register To call the function, see the example below
/*http.php*/
class http
{
public function callname(){
echo "this is http";
}
}
/*http2.php*/
class http
{
public function callname(){
echo "this is http2";
}
}
/ *test.php*/
spl_autoload_register(function($class){
if($class == 'http'){
require_once("/home/yejianfeng/handcode /http.php");
}
if($class == 'http2'){
require_once("/home/yejianfeng/handcode/http2.php");
}
});
spl_auto_call('http2');
$a = new http();
$a->callname(); //This will output "this is http2"
The spl_auto_register function makes it possible for us to use a custom function for automatic loading without using __autoload. This method is now commonly used.
Zend’s AutoLoader module uses this method. Excerpt the corresponding code
spl_autoload_register(array(__CLASS__, 'autoload'));
public static function autoload($class)
{
…..
}
Suggested reference article:
Regarding zend’s autoload mechanism, there is a detailed analysis in the previous article http://www.jb51.net/article/31399.htm.
Regarding the automatic loading mechanism of autoload, this article http://www.jb51.net/article/31279.htm explains it in great detail, starting from the bottom layer.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
