Home  >  Article  >  Backend Development  >  How to use the Plants vs. Zombies modifier How to use the PHP __autoload function (automatically load class files)

How to use the Plants vs. Zombies modifier How to use the PHP __autoload function (automatically load class files)

WBOY
WBOYOriginal
2016-07-29 08:47:551620browse

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, let’s 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, it can be seen that autoload How easy it is to use, haha...
But I have to remind you that you must pay attention to several aspects.
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 include the inherited class in the file when instantiating an inherited class;
2 , Another thing to note is that the class name and the file name of the class must be consistent, so that the magic function __autoload can be used more conveniently;
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: .././ Such file names are very dangerous.

The above introduces how to use the Plants vs. Zombies modifier and how to use the PHP __autoload function (automatic loading of class files), including how to use the Plants vs. Zombies modifier. I hope it will be helpful to friends who are interested in PHP tutorials.

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