Home >Backend Development >PHP Tutorial >what is php autoload class

what is php autoload class

伊谢尔伦
伊谢尔伦Original
2017-07-01 09:16:501563browse

php's Automatic loading:

Before php5, if we wanted to use a certain class or class method, we had to include or require, it can be used later. Every time you use a class, you need to write an include. Please

The php author wants to make it simple. It is best to reference a class. If there is no include currently, the system can automatically Find this class and automatically introduce it~

So: the autoload() function came into being.

Usually placed in the application entry class, such as discuz, placed in class_core.php.

Let’s talk about a simple example first:

The first situation: The content of file A.php is as follows

<?php
class A{
  public function construct(){
         echo &#39;fff&#39;;
  }
}
?>

The content of file C.php is as follows :

<?php   
function autoload($class)   
{   
$file = $class . &#39;.php&#39;;   
if (is_file($file)) {   
require_once($file);   
}   
}   

$a = new A(); //这边会自动调用autoload,引入A.php文件
?>

The second situation: Sometimes I hope to customize autoload and give a cooler name for loader, then C.php should be changed to the following:

<?php
function loader($class)
{
$file = $class . &#39;.php&#39;;
if (is_file($file)) {
require_once($file);
}
}
spl_autoload_register(&#39;loader&#39;); //注册一个自动加载方法,覆盖原有的autoload
$a = new A();
?>

The third situation: I hope to be more advanced and use a class to manage automatic loading

<?php   
class Loader   
{   
public static function loadClass($class)   
{   
$file = $class . &#39;.php&#39;;   
if (is_file($file)) {   
require_once($file);   
}   
}   
} 
spl_autoload_register(array(&#39;Loader&#39;, &#39;loadClass&#39;));   

$a = new A();
?>

This is currently the best form.

Usually we put spl_autoload_register(*) in the entry script, that is, quoted from the beginning. For example, what discuz does below.

if(function_exist(&#39;spl_autoload_register&#39;)){
  spl_autoload_register(array(&#39;core&#39;,&#39;autoload&#39;));  //如果是php5以上,存在注册函数,则注册自己写的core类中的autoload为自动加载函数
}else{
  function autoload($class){         //如果不是,则重写php原生函数autoload函数,让其调用自己的core中函数。
    return core::autoload($class);
  }
}

This paragraph is thrown at the front of the entry file, which is naturally excellent~

The above is the detailed content of what is php autoload class. For more information, please follow other related articles on the PHP Chinese website!

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