自动加载
虽然命名空间可以解决命名冲突的问题,但是每次导入时,需要require、include等来手动包含类的相关文件。为解决该问题,php提供了一种自动加载机制,可根据需要自动加载对应的文件。
注册自动加载函数
- __autoload()函数的使用(php7.2起报废)
autoload1.php
<?php
use mytp\Container;
function __autoload($classname)
{
$filename = substr($classname,strrpos('\\',$classname)+1);
$filename = $filename . '.php';
if(is_file($filename))
{
require $filename;
}
}
echo Container::student();
- 推荐使用spl_autoload_register()函数
autoload2.php
<?php
use mytp\Container;
function loader($classname)
{
$filename = substr($classname,strrpos($classname,'\\')+1);
$filename = $filename .'.php';
if(is_file($filename))
{
require $filename;
}
}
spl_autoload_register('loader');
echo Container::student();
``