定义一个命名空间
1 | namespace test; |
这样在这个命名空间定义的方法、类,都隶属这个命名空间,甚至在命名空间内定义的方法、类可以和php内置的方法、类同名。
命名空间定义方法
1 | namespace test; |
2 |
3 | function getName(){ |
4 | echo 'tom' ; |
5 | } |
6 |
7 | getName(); //同一个命名空间可以直接调用 |
8 | \test\getName(); //其他命名空间要这样调用 |
我用的是netbeans,所以打一个\,就弹出提示框,这边test就是刚才定义的命名空间了。如下图
定义一个方法和php内置的方法同名
strlen是php内置的方法,但是在test命名空间内,也可以定义。如果在命名空间内要调用php内置的方法,使用\符号就可以了,看下面代码:
1 | namespace test; |
2 | function strlen ( $str ){ } |
3 |
4 | strlen ( 'tom' ); //这里调用的是test命名空间的方法 |
5 | \test\ strlen ( 'tom' ); //同上 |
6 | \ strlen ( 'tom' ); //这里调用的是php内置的方法 |
多重命名空间
命名空间也支持多重命名空间,例如:
1 | namespace test\test2; |
2 |
3 | function getName() { |
4 | echo 'anny' ; |
5 | } |
6 |
7 | \test\test2\getName(); //输出anny |
使用命名空感觉确实方便了不少,只要确定了命名空间,就不用担心和其他人协同开发项目时定义的方法,类名出现重复。zend framework 2也广泛使用命名空间了。