Home  >  Article  >  Backend Development  >  How to use PHP __autoload function (automatically load class files)_PHP tutorial

How to use PHP __autoload function (automatically load class files)_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:20:46876browse

This is also one of the basic ideas of OO design. Before PHP5, if you need to use a class, you only need to include it directly using include/require. Here is a practical example:

Copy code The code is as follows:

class ClassA{
public function __construct() {
echo “ClassA load success!”;
}
}
//Define a class ClassA, the file name is ClassA.php
class ClassA{
public function __construct() {
echo “ClassA load success!”;
}
}
class ClassB extends ClassA {
public function __construct(){
//parent::__construct();
echo “ClassB load success!”;
}
}
//Define a class ClassB, the file name is ClassB.php, ClassB inherits ClassA
class ClassB extends ClassA {
public function __construct(){
//parent::__construct();
echo “ClassB load success!”;
}
}
After defining two classes for testing, we come Write a PHP running program file containing the __autoload() method as follows:
function __autoload($classname){
$classpath=”./”.$classname.'.php';
if(file_exists ($classpath)){
require_once($classpath);
}
else{
echo 'class file'.$classpath.'not found!';
}
}

$newobj = new ClassA();
$newobj = new ClassB();

There is no problem at all in running this file, which shows how powerful autoload is It’s easy to use, haha...
But I have to remind you that there are several aspects that you must pay attention to.
1. If the class has an inheritance relationship (for example: ClassB extends ClassA), and ClassA is not in the directory where ClassB is located
When you use the __autoload magic function to instantiate ClassB, you will receive a fatal error:
Fatal error: Class 'Classd' not found in ……ClassB.php on line 2,
Solution: Put all classes with extends relationship in the same file directory, or manually add them in the file when instantiating an inherited class Contains inherited classes;
2. Another thing to note is that the class name and the class file name must be consistent to make it easier to use the magic function __autoload;
Other things to note:
3 . This method is invalid when running PHP scripts in CLI mode;
4. If your class name is related to user input - or depends on user input, be sure to check the input file name, for example: .. File names like /./ are very dangerous.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/325044.htmlTechArticleThis is also one of the basic ideas of OO design. Before PHP5, if you need to use a class, you only need to include it directly using include/require. Here's a practical example: ...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn