0

0

PHP命名空间和自动加载初探,php命名空间初探

php中文网

php中文网

发布时间:2016-06-13 08:53:29

|

1533人浏览过

|

来源于php中文网

原创

PHP命名空间和自动加载初探,php命名空间初探

参考资料: PHP手册-语言参考:http://php.net/manual/zh/language.namespaces.php   概要: 1. 声明了命名空间之后,下面的const, function, class都会划归到该命名空间。 2. 只有声明过命名空间的PHP 文件才能加载有命名空间的PHP文件。 3. PHP 5.3 及以上才能使用命名空间     名词:     关键字:namespace 用来声明 本PHP文件的命名空间     常量:__NAMESPACE__ 用来返回当前命名空间的名称 默认为空字符串
    操作符: use 默认以最后一个\后的字符串为别名,配合 as 则为 as后的字符串,与MySQL的字段别名一致。   实际操作如下: 在apache目录下建立如下文件:index.php,Order.php,User.php     Order.php 的内容为    
 1 php
 2 /**
 3  * @Author: Martin
 4  * @Support: Martin
 5  * @Last Modified by:   Martin
 6  */
 7 namespace Order;
 8 
 9 const STR = 'order list
'; 10 11 function detail() 12 { 13 return 'order detail
'; 14 } 15 function call_by_self() 16 { 17 return 'call by self
'; 18 } 19 /** 20 * 21 */ 22 class Orderlist 23 { 24 25 public function __construct() 26 { 27 echo 'Class NameSpace is "', __NAMESPACE__, '"'; 28 } 29 public function show_list() 30 { 31 for ($i = 0; $i < 5; $i++) { 32 echo "
  • this is order$i
    "; 33 //内部直接访问 34 echo detail(); 35 echo "
"; 36 } 37 } 38 } 39 //内部通过命名空间访问 40 echo \Order\call_by_self();

 

Subtxt
Subtxt

生成有意义的文本并编写完整的故事。

下载

index.php 内容为:

 1 php
 2 /**
 3  * @Author: Martin
 4  * @Support: Martin
 5  * @Last Modified by:   Martin
 6  */
 7 namespace index;
 8 include_once('Order.php');
 9 
10 //外部访问class 实例化即可使用
11 use Order\Orderlist;
12 $orderlist = new orderlist;
13 $orderlist->show_list();
14 
15 //外部访问静态变量和function 直接访问
16 use Order;
17 echo Order\STR;
18 echo Order\detail();

 

打印结果为:

立即学习PHP免费学习笔记(深入)”;

以上内容包含了:通过命名空间来访问文件和直接实例化访问,以及本空间直接访问。 命名空间的存在是为了防止两个同名的class都被载入,使用命名空间在加载第三方的类时能避免同名冲突。   下面来说一下自动加载   SPL 的全称是:Standard PHP Library PHP标准库,在PHP5以后已经内置在PHP中,无需另外安装。 SPL包含了一套针对数据结构、迭代器、异常、文件处理等的函数库。   自动装载库有以下函数 spl_autoload_call:尝试调用所有已注册的__autoload()函数来装载请求类

 

User.php 内容为:

1 namespace User;
2 //直接载入Order
3 #include('Order.php');
4 //自动载入
5 spl_autoload_register(function($className) {
6     var_dump($className);
7 });
8 spl_autoload_call('Order');

 

打印结果为:

 

SPL自动载入函数包含如下:

spl_autoload_extensions: 注册并返回spl_autoload函数使用的默认文件扩展名。
get_include_path: 设置默认引用的文件夹
spl_autoload_register: 自动引入文件
  实际操作如下: 我们重新调整目录结构和并复制order 到 lib下面 如下:

立即学习PHP免费学习笔记(深入)”;

 

修改User.php 如下:

 1 namespace User;
 2 
 3 //直接载入Order
 4 #include('Order.php');
 5 //自动载入
 6 define('LIB_DIR', __DIR__ . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR);
 7 spl_autoload_register(function ($class) {
 8     $path = LIB_DIR . $class . '.lib.php';
 9     include ($path);
10 });
11 
12 spl_autoload_call('Order');
13 use Order;
14 
15 $orderList = new \Order\Orderlist();
16 $orderList->show_list();

 

打印结果为:

 

注意: 当采用SPL载入文件时,use并不能触发spl_autoload_register函数,他会被new触发,这样就会提示找不到文件, 所有采用spl_autoload_call 来提前触发自动载入。   本文地址:http://www.cnblogs.com/martin-tan/p/4864539.html  问题: 使用get_include_path,spl_autoload_extensions并且spl_autoload_register默认为空的情况下并不能直接载入目录下的文件,原因如上。(?)    

 

 
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.3万人学习

apipost极速入门
apipost极速入门

共6课时 | 0.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号