命名空间 使用范围 访问方式
*
命名空间
从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,
对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中
存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目
录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。
http://php.net/manual/zh/language.namespaces.php
*
ThinkPHP5采用命名空间方式定义和自动加载类库文件,有效的解决了多模块和Composer类库之间的命名空间冲突问题,并且实现了更加
高效的类库自动加载机制。
http://www.kancloud.cn/manual/thinkphp5/118014
*
function 适用于命名空间
const 适用于命名空间
class 适用于命名空间
define 不适用于命名空间
*
访问方式:
1、非限定名称访问方式
2、完全限定名称访问方式
3、限定名称访问方式(相对路径)
<?php /** * 命名空间 使用范围 访问方式 * * 命名空间 * 从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组, * 对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中 * 存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目 * 录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。 * //m.sbmmt.com/ * * ThinkPHP5采用命名空间方式定义和自动加载类库文件,有效的解决了多模块和Composer类库之间的命名空间冲突问题,并且实现了更加 * 高效的类库自动加载机制。 * //m.sbmmt.com/ * * function 适用于命名空间 * const 适用于命名空间 * class 适用于命名空间 * define 不适用于命名空间 * * 访问方式: * 1、非限定名称访问方式 * 2、完全限定名称访问方式 * 3、限定名称访问方式(相对路径) */ /** * kj1,命名空间1 */ namespace kj1; function getmsg(){ echo '123<br>'; } //define('MN','iwanghang'); const MN="iwanghang<br>"; class Animals{ public $obj='cat<br>'; } /** * kj2,命名空间2 */ namespace kj2; use kj1\Animals; function getmsg(){ echo '456<br>'; } //define('MN','iwanghang0'); const MN="iwanghang0<br>"; /** * 访问方式:1、非限定名称访问方式 */ getmsg(); /** * 访问方式:2、完全限定名称访问方式 */ \kj1\getmsg(); \kj2\getmsg(); echo \kj1\MN; $animal = new Animals(); echo $animal->obj; /** * 访问方式:3、限定名称访问方式 */ //echo kj1\getmsg(); // 会报错,function kj2\kj1\getmsg() 找不到这个函数 /** * 访问方式:3、限定名称访问方式 */ namespace kj3; echo kj4\getmsg(); // 打印结果:789 namespace kj3\kj4; function getmsg(){ echo '789<br>'; }
以上就是Android程序员学PHP开发(30)-ThinkPHP5.0(2)命名空间-PhpStorm的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!