磺敖尖柿蛋馁稻弘俗确戊朽秒
命名空间的声明与使用
1.使用关键字:namespace
2.php5.3+
3.namespace 之前不能有除了declare和注释之外的任何代码,html也不行
4.命名空间默认从全局开始定位,全局空间用\表示,类似于根目录
5.如果当前脚本声明了命名空间,则所有成员的访问,就必须使用命名空间,包括系统函数
新建demo3.php
<?php class Demo { public $name="mengmianren"; } function add($a,$b) { return $a+$b; } const SITE="萌面人资料铺"; class Demo { public $name="mengmianren"; } function add($a,$b) { return $a+$b; } const SITE="萌面人资料铺";
执行:
使用命名空间
<?php //1. 声明一个命名空间 namespace one; class Demo { public $name="mengmianren"; } function add($a,$b) { return $a+$b; } const SITE="萌面人资料铺"; //如果我想声明同名的类,常量与函数可以再声明一个命名空间 //2.一个脚本中允许有多个命名空间 //声明命名空间:two,使用\tow\进行引用 namespace two; class Demo { public $name="mengmianren"; } function add($a,$b) { return $a+$b; } const SITE="萌面人资料铺";
执行,不报错
在命名空间自定义var_dump()
<?php //1. 声明命名空间one namespace one; class Demo { public $name="mengmianren"; } function add($a,$b) { return $a+$b; } const SITE="萌面人资料铺"; //2.声明命名空间two namespace two; class Demo { public $name="mengmianren"; } function add($a,$b) { return $a+$b; } const SITE="萌面人资料铺"; //查看当前的命名空间 echo "当前的命名空间是:".__NAMESPACE__."<br>"; //声明var_dump()函数 因为在命名空间two中 所以不会与系统的var_dump()函数冲突 function var_dump($name) { return "我是命名空间two中的函数var_dump(),我的名字是:".$name; } echo var_dump('mengmianren'); //此时,如果要调用全局的var_dump()需要加\ echo "<br>"; \var_dump(new Demo()); echo "<br>"; \var_dump([1,2,3,4,5,6]);
执行:
不建议在一个脚本中声明多个命名空间,如果一定要声明多个命名空间,建议这样写:
<?php //1. 声明命名空间one namespace one { class Demo { public $name="mengmianren"; } function add($a,$b) { return $a+$b; } const SITE="萌面人资料铺"; } //2.声明命名空间two namespace two { class Demo { public $name="mengmianren"; } function add($a,$b) { return $a+$b; } const SITE="萌面人资料铺"; //查看当前的命名空间 echo "当前的命名空间是:".__NAMESPACE__."<br>"; //声明var_dump()函数 因为在命名空间two中 所以不会与系统的var_dump()函数冲突 function var_dump($name) { return "我是命名空间two中的函数var_dump(),我的名字是:".$name; } echo var_dump('mengmianren'); echo "<br>"; \var_dump(new Demo()); //此时,如果要调用全局的var_dump()需要加\ } //默认就是全局,请省略空间标识符 namespace { echo "<br>"; var_dump([1,2,3,4,5,6]); }
执行:
喇恨橙厘疚彭卯柑溶涣烫儒敢