PHP命令空间namespace及use的用法实践总结
Posted keta
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP命令空间namespace及use的用法实践总结相关的知识,希望对你有一定的参考价值。
看php中的命名空间和use
namespace appadminmodel;
use thinkModel;
use thinkDb;
综上可以看出,命名空间就是相当于一个文件夹的路径。
同一个命名空间下,不能有相同的类文件。
同名的类文件可以存在于不同的命名空间下面。
用了命名空间,可以方便的调用其他文件夹下的文件。
只需要通过using、import、use引入命名空间下的文件即可。
从5.3开始你可以使用命名空间来组织你的代码了。 不同的命名空间内可以包含相同名字的类、函数以及常量。 声明一个命名空间非常简单,只需要在文件的开始处加上namespace 语句,像下面这样
从5.3开始你可以使用命名空间来组织你的代码了。 不同的命名空间内可以包含相同名字的类、函数以及常量。 声明一个命名空间非常简单,只需要在文件的开始处加上namespace 语句,像下面这样
- <?php
- /** classes/my/foo/MyClass.php */
- namespace my::foo;
- class MyClass {}//定义一个类
- // 当然,也可以定义函数和常量
- function myFunc() { }
- const MY_CONST = ‘foo’;
- ?>
有多种方法来访问
- <?php
- /** test.php */
- include(‘classes/my/foo/MyClass.php’);
- // 可以随时通过完整的名称来访问一个类
- $foo = new my::foo::MyClass();
- // 还可以使用use语句来导入一个命名空间
- use my::foo;
- // 然后,通过foo来引用 my::foo这个命名空间
- $foo = new foo::MyClass();
- // 也可以只导入一个类
- use my::foo::MyClass;
- $foo = new MyClass;
- // 可以为命名空间或者命名空间中的类创建别名
- use my::foo as MyFoo;
- use my::foo::MyClass as MyFooClass;
- $foo = new MyFoo::MyClass();
- $foo = new MyFooClass();
- // 注意, 下面的两种写法是等价的:
- use my::foo;
- use my::foo as foo;
- // 也可以用同样的方法来访问函数和常量
- my::foo::myFunc();
- myFoo::myFunc();
- my::foo::MY_CONST;
- myFoo::MY_CONST;
- ?>
use 语句只能导入命名空间和类,下面这种写法就不行: use my::foo::MY_CONST;。一个use语句的有效范围是从它被定义开始直到文件的结尾,你可以在全局范围内任何地方使用它。 你可以在多个文件中使用相同的命名空间。但是一个文件只应该包含一个命名空间 (这一行为可能会在最终版本中被改变,也可能用package来替换namespace关键字 :))。 尽管不能import一个函数或者常量, 但是仍然可以使用一些前缀来从命名空间中访问他们。在PHP 5.3的早期版本中,import 关键字被用来代替 use, 现在这一点已经被改变
以上是关于PHP命令空间namespace及use的用法实践总结的主要内容,如果未能解决你的问题,请参考以下文章
using namespace ;是启用一个命名空间。有没有结束用一个命名空间的办法呢?