实例
<?php namespace one; class Demo{public $name='Peter Zhu';} const SITE='PHP中文网'; function add($a,$b){return $a+$b;} namespace two; class Demo{public $name='朱老师';} const SITE = 'www.php.cn'; function add($a,$b){return $a+$b;} echo (new Demo)->name, '<br>'; $className = __NAMESPACE__.'\Demo'; echo (new $className)->name,'<br>'; echo (new \two\Demo)->name, '<hr>'; echo 'one空间的类成员:',(new \one\Demo)->name,'<br>'; $welcome = 'php中文网欢迎您'; \print_r($welcome); echo '<br>'; print($welcome); echo '<hr>'; function print_r($arg) { echo '我是当前空间声明的函数调用:'.$arg; } print_r($welcome); echo '<br>'; \two\print_r($welcome); \print_r($welcome); \two\print_r($welcome); ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php namespace one ; //use one\two\three\Demo; use one\two\three\Demo as Demo1; //class Demo1{public $name='Peter Zhu';} class Demo{public $name='Peter Zhu';} const SITE='PHP中文网'; function add($a,$b){return $a+$b;} echo (new Demo1)->name; namespace one\two\three; class Demo{public $name='朱老师';} const DOMAIN = 'www.php.cn'; function add($a,$b){return $a+$b;} ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
非限定名称,限定名称和完全限定名称的命名空间之间的区别和联系:
非限定名称不包括前缀的类名称相当于只包括了文件名,限定名称包含前缀的名称相当于包括了命名空间所在的目录名(相对路径名),完全限定名称不仅包含了全局前缀操作符的名称还包含了命名空间所在根目录的名称(绝对路径)。
9月6号课堂总结 简单来说命名空间是一种封装事物(代码)的方法,主要是为了解决以下两类问题:
第一,用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突;
第二,为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高代码的可读性。
命名空间通过关键字namespace来声明且必须在所有代码之前声明命名空间,在默认情况下,所有的常量、类和函数名都放在全局空间下。