长沙PHP培训
达内长沙芙蓉路中心

15017569023

热门课程

那些教程没有的php3-命名空间

  • 时间:2016-10-31 21:14
  • 发布:长沙达内php培训学校
  • 来源:PHP教程

php.net
(PHP 5 >= 5.3.0, PHP 7)

定义命名空间

长沙PHP培训班虽然任意合法的PHP代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响,它们是:类(包括抽象类和traits)、接口、函数和常量。
如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间,除了一个以外:declare关键字。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。

<html><?phpnamespaceMyProject;// 致命错误 - 命名空间必须是程序脚本的第一条语句?>

同一个命名空间可以定义在多个文件中,即允许将同一个命名空间的内容分割存放在不同的文件中。

定义子命名空间
<?phpnamespaceMyProject\Sub\Level;constCONNECT_OK =1;classConnection{/* ... */}functionconnect(){/* ... */}?>

在同一个文件中定义多个命名空间

注:在实际的编程实践中,非常不提倡在同一个文件中定义多个命名空间!

<?phpnamespaceMyProject{constCONNECT_OK= 1;classConnection{/* ... */}functionconnect(){/* ... */} }namespaceAnotherProject{constCONNECT_OK= 1;classConnection{/* ... */}functionconnect(){/* ... */} }?>

使用命名空间

类名的三种引用方式:

  • 非限定名称(名称中不包含命名空间分隔符的标识符),或不包含前缀的类名称。例如 $a=new foo(); 或 foo::staticmethod();。如果当前命名空间是 currentnamespace,foo 将被解析为 currentnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,则 foo 会被解析为foo。* *警告**:如果命名空间中的函数或常量未定义,则该非限定的函数名称或常量名称会被解析为全局函数名称或常量名称。
  • 限定名称(名称中含有命名空间分隔符的标识符),或包含前缀的名称,例如 $a = new subnamespace\foo(); 或 subnamespace\foo::staticmethod();。如果当前的命名空间是 currentnamespace,则 foo 会被解析为 currentnamespace\subnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,foo 会被解析为subnamespace\foo。
  • 完全限定名称(名称中包含命名空间分隔符,并以命名空间分隔符开始的标识符),或包含了全局前缀操作符的名称。访问任意全局类、函数或常量,都可以使用完全限定名称,例如 \strlen() 或 \Exception 。

tips:

$a ='\namespacename\classname'; $obj =new$a; $a ='namespacename\classname'; $obj =new$a; $b ='namespacename\funcname'; $b();// prints namespacename\funcname$b ='\namespacename\funcname'; $b();// also prints namespacename\funcname

使用相关常量

常量__NAMESPACE__的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。

使用命名空间:别名/导入

<?phpnamespacefoo;useMy\Full\ClassnameasAnother;// 下面的例子与 use My\Full\NSname as NSname 相同useMy\Full\NSname;// 导入一个全局类useArrayObject;// importing a function (PHP 5.6+)usefunctionMy\Full\functionName;// aliasing a function (PHP 5.6+)usefunctionMy\Full\functionNameasfunc;// importing a constant (PHP 5.6+)useconstMy\Full\CONSTANT; $obj =newnamespace\Another;// 实例化 foo\Another 对象$obj =newAnother;// 实例化 My\Full\Classname 对象NSname\subns\func();// 调用函数 My\Full\NSname\subns\func$a =newArrayObject(array(1));// 实例化 ArrayObject 对象// 如果不使用 "use \ArrayObject" ,则实例化一个 foo\ArrayObject 对象func();// calls function My\Full\functionNameechoCONSTANT;// echoes the value of My\Full\CONSTANT?>

类名称总是解析到当前命名空间中的名称。因此在访问系统内部或不包含在命名空间中的类名称时,必须使用完全限定名称。

posted @ 2016-10-30 12:09 jcuan 阅读(17) 评论(0) 编辑 收藏
注册用户登录后才能发表评论,请 登录 或 注册访问网站首页。

公告

昵称:jcuan
园龄:4个月
粉丝:0
关注:0
< 2016年10月 >
25 26 27 28 29 30 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
上一篇:phpstorm 配置 xdebug调试工具
下一篇:php中读写excel表格文件示例。

马上预约三天免费体验课

姓名:

电话:

PHP Web实时消息后台服务器推送技术:GoEasy

Web实时消息GoEasy web推送实例

【长沙PHP培训班】PHP知识点中的git

linux下yum安装PHP APC

选择城市和中心
贵州省

广西省

海南省