PHP自动加载 spl_autoload_register

内容描述:
     刚开始自学PHP的时候,一个功能类单独写一个文件,引入类文件时用 require_once "类文件路径";后来工作中接触thinkPHP3.2.3框架,发现框架中引入类文件的方式用的是 命名空间 配合 spl_autoload_register() 实现的自动加载;

一、无命名空间同一个目录下

目录结构
PHP自动加载 spl_autoload_register_第1张图片

MyClass1.class.php文件内容:
';
    }
}



MyClass2.class.php文件内容:
';
    }
}



index.php文件内容:
’;



运行效果:https://www.httpsdomain.com/index.php
This is MyClass1 
This is MyClass2 
END 

OK

二、有命名空间,不在同一个目录中的类

目录结构如下:
PHP自动加载 spl_autoload_register_第2张图片
/Animal/Cat.class.php文件内容如下:
';
    }
}



/Anima/Dog.class.php文件内容如下:
';
    }
}



如果不使用自动加载,按照原有的require_once,那么
/index.php文件内容如下:
’;




如果使用自动加载,那么/index.php文件内容如下:
’;



运行结果:
PHP自动加载 spl_autoload_register_第3张图片
如果不在代码开头写 user Animal\Cat;那么在实例化类时,就必须写完整的类路径。/index.php文件内容如下:
';


运行结果:
PHP自动加载 spl_autoload_register_第4张图片

不同命名空间的类 不同路径的类文件

如/Logic/Activity/ActivityOne.class.php文件 与 /Animal/Dog.class.php文件,目录如下:
PHP自动加载 spl_autoload_register_第5张图片
/Logic/Activity/ActivityOne.class.php文件内容如下:
';
    }
}


/index.php文件内容如下:


运行结果:
PHP自动加载 spl_autoload_register_第6张图片

注意

    1.命名空间与文件路劲的对应关系:如use Animal\Dog; Dog类的存放路径必须是在Animal文件夹中,否则引入文件是会报错找不到文件。
    2.类文件的后缀名必须统一:如以’.class.php'结尾




你可能感兴趣的:(PHP自动加载 spl_autoload_register)