【php】命名空间 和 自动加载的关系
2016-11-25 14:21
531 查看
目的
本文的目的主要是说明 命名空间的 use 关键词 和 new ClassName 这两个步骤,哪个步骤才会执行自动加载,这是逻辑有点混乱的表现,这种想法也是很正常的,让我们来解密吧命名空间(namespace)
php从5.3加入了命名空间,我略懂一些java,所以命名空间还是比较好理解的,为什么需要命名空间啦?主要解决自己写的内部类/函数/常量 和 第三方的类/函数/常量冲突。引用命名空间下资源都要 使用关键字 use 标明 例如
require_once("apanly/BrowserDetector/Browser.php"); use apanly\BrowserDetector\Browser; new Browser();
自动加载
php可以自定义自动加载函数,主要减少include 和 require 的使用。例如function myLoader($classname){ $class_file = $classname . '.php'; if ( file_exists($class_file) ){ require_once($class_file); }else{ echo "[ autoload error ]".$class_file." not found"; die(0); } } spl_autoload_register("myLoader");
疑问
是 use 的时候 会执行 myLoader 自动记载函数 还是 new 一个对象的时候会执行自动加载函数?答案是: new 一个对象的时候 会执行自动加载函数
示例演示
use 测试
<?php //根据class名字 找文件 function myLoader($classname){ $class_file = $classname . '.php'; if ( file_exists($class_file) ){ require_once($class_file); }else{ echo "[ autoload error ]".$class_file." not found"; die(0); } } spl_autoload_register("myLoader"); use \apanly\test\test; new test();没有任何输出
new 测试
<?php //根据class名字 找文件 function myLoader($classname){ $class_file = $classname . '.php'; if ( file_exists($class_file) ){ require_once($class_file); }else{ echo "[ autoload error ]".$class_file." not found"; die(0); } } spl_autoload_register("myLoader"); use \apanly\test\test;
输出 :
[ autoload error ]apanly\test\test.php not found
结论
use 只是标明该使用那个命名空间,new 对象才是真真执行自动加载的触发器。命名空间和自动加载没有半毛钱关系参考资料
【演示代码】原文地址:【php】命名空间 和 自动加载的关系
标签:use autoload namespace
智能推荐
【No.2 Ionic】Android打包【No.5 Ionic】修改 应用名,icon,启动界面
Composer : php依赖管理工具
PSR : php编码规范
【ionic】Mac IOS下真机调试
相关文章推荐
- 【php】命名空间 和 自动加载的关系
- 【php】命名空间 和 自动加载的关系
- 【php】命名空间 和 自动加载的关系
- PHP中的use、命名空间、引入类文件、自动加载类的理解
- 关于Thinkphp3.2 命名空间的说明-php5.3命名空间介绍-TP自动加载
- 慕课网----大话PHP设计模式 一(命名空间,类的自动加载,PSR-0)
- PHP 命名空间与自动加载机制介绍
- 【干货】PHP命名空间和自动加载类
- php命名空间自动加载后使用单独类include使用
- PHP命名空间和自动加载类
- PHP自动加载autoload和命名空间的应用小结
- PHP 命名空间与自动加载机制介绍
- PHP 使用命名空间(namespace),实现自动加载
- PHP命名空间自动加载之composer实现方式
- PHP 命名空间与自动加载
- PHP命名空间和自动加载类
- PHP中的use、命名空间、引入类文件、自动加载类的理解
- 一张图告诉你php的命名空间和自动加载
- PHP命名空间和自动加载初探
- PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间