PHP 中的命名空间
来源:互联网 发布:dota2战队数据 编辑:程序博客网 时间:2024/06/10 20:42
PHP命名空间namespace
什么是namespace?
官方解释命名空间是 一种封装事物的方法。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。
namespace 的定义和使用
定义:
<?phpnamespace Myproject;
或者:
<?php namespace Myproject{}
使用
<?php use Myproject/School
或者
<?phpuse Myproject/School AS MYSchool
命名空间是运行时解析的。use 就相当于一处声明,并不解析和加载。比如下面这个例子:
test.php
<?phpuse my\name;require_once("/home/yejianfeng/handcode/test/namespace1.php");$a = new my\name\A();$a->Print1();
namespace1.php
<?phpnamespace my\name;class A { public function Print1(){ echo 11; }}
孙然test.php的require_once 在use的下面,也是可以正常运行的,因为程序只哟偶在new my\name\A() 的时候,才会去架子啊命名空间my\name
全局类和命名空间类
- 如果要new一个全局类使用 new \A()
- 如果要new一个命名空间类,使用new my\namespace\A()
命名空间的顺序
<?phpnamespace A;use B\D, C\E as F;// 函数调用foo(); // 首先尝试调用定义在命名空间"A"中的函数foo() // 再尝试调用全局函数 "foo"\foo(); // 调用全局空间函数 "foo" my\foo(); // 调用定义在命名空间"A\my"中函数 "foo" F(); // 首先尝试调用定义在命名空间"A"中的函数 "F" // 再尝试调用全局函数 "F"// 类引用new B(); // 创建命名空间 "A" 中定义的类 "B" 的一个对象 // 如果未找到,则尝试自动装载类 "A\B"new D(); // 使用导入规则,创建命名空间 "B" 中定义的类 "D" 的一个对象 // 如果未找到,则尝试自动装载类 "B\D"new F(); // 使用导入规则,创建命名空间 "C" 中定义的类 "E" 的一个对象 // 如果未找到,则尝试自动装载类 "C\E"new \B(); // 创建定义在全局空间中的类 "B" 的一个对象 // 如果未发现,则尝试自动装载类 "B"new \D(); // 创建定义在全局空间中的类 "D" 的一个对象 // 如果未发现,则尝试自动装载类 "D"new \F(); // 创建定义在全局空间中的类 "F" 的一个对象 // 如果未发现,则尝试自动装载类 "F"// 调用另一个命名空间中的静态方法或命名空间函数B\foo(); // 调用命名空间 "A\B" 中函数 "foo"B::foo(); // 调用命名空间 "A" 中定义的类 "B" 的 "foo" 方法 // 如果未找到类 "A\B" ,则尝试自动装载类 "A\B"D::foo(); // 使用导入规则,调用命名空间 "B" 中定义的类 "D" 的 "foo" 方法 // 如果类 "B\D" 未找到,则尝试自动装载类 "B\D"\B\foo(); // 调用命名空间 "B" 中的函数 "foo" \B::foo(); // 调用全局空间中的类 "B" 的 "foo" 方法 // 如果类 "B" 未找到,则尝试自动装载类 "B"// 当前命名空间中的静态方法或函数A\B::foo(); // 调用命名空间 "A\A" 中定义的类 "B" 的 "foo" 方法 // 如果类 "A\A\B" 未找到,则尝试自动装载类 "A\A\B"\A\B::foo(); // 调用命名空间 "A\B" 中定义的类 "B" 的 "foo" 方法 // 如果类 "A\B" 未找到,则尝试自动装载类 "A\B"?>
原文来自:http://www.cnblogs.com/yjf512/archive/2013/05/14/3077285.html
0 0
- PHP中的命名空间
- PHP中的命名空间
- PHP中的命名空间
- PHP中的命名空间
- PHP 中的命名空间
- PHP中的命名空间
- PHP中的命名空间
- php中的命名空间
- php中的命名空间
- PHP中的命名空间
- PHP中的命名空间
- php中的命名空间
- PHP 5.3 中的命名空间
- php中的命名空间namespace
- 说说PHP中的命名空间相关概念
- php导入命名空间中的类
- PHP中的命名空间(namespace)的使用
- PHP手册-命名空间
- mapreduce的shuffle,partition,combine
- 使用MyBatis Generator自动创建代码
- 67. Add Binary【E】【44】【leetcode】
- c语言 圆周率代码
- 充电提示音
- PHP 中的命名空间
- shell中的数学计算:正式和浮点数的计算
- 使用openFileInput和openFileOutput实现Android平台的数据存储
- win10 Hyper-v 网络配置
- Android学习笔记:TabHost 和 FragmentTabHost
- awk一些简单命令
- 欢迎使用CSDN-markdown编辑器
- linux服务器历险之sysctl优化linux网络
- 【C#】 String和String Builder效率比较