PHP命名空间与自动加载类详解
php  /  管理员 发布于 7年前   159
本文实例讲述了PHP命名空间与自动加载类。分享给大家供大家参考,具体如下: 今天我要给大家介绍的是PHP的命名空间 和 自动加载类 我先简单的分开演示 在放在一起 大家请看: 想必大家都应该知道 在运用这个类只能加载一次 ,在很多时候我们要引入的不止一个类这个时候怎么办呢! 牛逼的php大神们 出了个新方法 来解决 这个问题 请看就是这个函数 这个函数的用法有很多 这里先给大家介绍一种使用方法 如下: 判断是否有此文件 如果有引入 如果没有 没有如果了,哪来的如果 我们可以打印 一个php文件里 是不支持 这个时候我们就能用的到命名空间了 废话不多数 看例子 AutoLoading\loading 上面就是一个自动加载的核心思想方法。下面我们就来 index.php 由于我们是采用PSR-O方式来定义 APP\Android\Name 所以就会很容易找到文件,并输出: Lib static function test 好了。基本的东西就讲完了. 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助。什么是自动加载类?
__autoload
这个魔术方法$db = new DB();function __autoload($className){echo $className;exit();//在这个里面引用类}
spl_autoload_register()
满足了此类需求。 它实际上创建了 autoload 函数的队列,按定义时的顺序逐个执行。相比之下, __autoload()
只可以定义一次。function load1($className){echo 1;require $className . '.php';}spl_autoload_register('load1'); //将load1函数注册到自动加载队列中。$db = new DB(); //找不到DB类,就会自动去调用刚注册的load1函数了//php 5.3之后,也可以像这样支持匿名函数了。spl_autoload_register(function($className){if (is_file('./lib/' . $className . '.php')) {require './lib/' . $className . '.php';}});
多个
spl_autoload_register
的使用function load1($className){ echo 1; if (is_file($className . '.php')) { require $className . '.php'; }}function load2($className){ echo 2; if (is_file('./app/' . $className . '.php')) { require './app/' . $className . '.php'; }}function __autoload($className){ echo 3; if (is_file('./lib/' . $className . '.php')) { require './lib/' . $className . '.php'; }}//注册了3个spl_autoload_register('load1');spl_autoload_register('load2');spl_autoload_register('__autoload');$db = new DB(); //DB就在本目录下$info = new Info(); //Info 在/lib/Info.php
spl_autoload_functions()
函数,来显示一共注册了多少个自动加载:var_dump(spl_autoload_functions());//数组的形式输出array (size=3)0 => string 'load1' (length=5)1 => string 'load2' (length=5)2 => string '__autoload' (length=10)
命名空间
new
两个名字的namespace app;class new{public function ten(){echo "85";}}namespace hii;class new{public function ten(){echo "85";}}
spl_autoload_register
自动加载+namespace命名空间 的使用spl_autoload_register
来注册这个函数:namespace
的命名的,所以很好的定位到这个文件的在哪个目录下了。很爽。对不对。namespace App\Android;class Name{public function __construct(){echo __NAMESPACE__ . "
";}public static function test(){echo __NAMESPACE__ . ' static function test
';}}
App\Android static function test
App\Ios static function test您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号