zoukankan      html  css  js  c++  java
  • 关于命名空间 namespace的总结

    namespace

    有作用的类型  类、函数、常量
    关键字namespace必须在所有代码之前 除用于编码的declare语句

    namespace Myproject;
    
    const A = 1;
    class connection{
        
    }
    funciton connect(){}



    namespace 同一个空间名可以用于多个php文件中 即允许将一个空间的内容分割到不同的文件中。

    与文件目录类似 命名空间可以使用分层级

    namespace MyprojectLevel;

    在同一个文件中,定义多个命名空间。有两种方法:
    1.

    namespace Myproject;
    ...
    ...
    namespace Labproject;
    ...
    ...


    2.大括号

    namespace Myproject{
        ...
    }
    namespace Labproject{
        ...
    }



    但是我们不提倡在一个文件中定义多个命名空间。


    将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。全局代码必须用一个不带名称的 namespace 语句加上大括号括起来,例如:

    <?php
    namespace MyProject {
    
    const CONNECT_OK = 1;
    class Connection { /* ... */ }
    function connect() { /* ... */  }
    }
    
    namespace { // global code
    session_start();
    $a = MyProjectconnect();
    echo MyProjectConnection::start();
    }
    ?> 



    除了开始的declare语句外,命名空间的括号外不得有任何PHP代码。

    <?php
    declare(encoding='UTF-8');
    namespace MyProject {
    
    const CONNECT_OK = 1;
    class Connection { /* ... */ }
    function connect() { /* ... */  }
    }
    
    namespace { // 全局代码
    session_start();
    $a = MyProjectconnect();
    echo MyProjectConnection::start();
    }
    ?> 



    关于命名空间中 类、函数、常量的使用

    1. 非限定名称,或不包含前缀的类名称,例如 $a=new foo(); 或 foo::staticmethod();。如果当前命名空间是 currentnamespace,foo 将被解析为 currentnamespacefoo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,则 foo 会被解析为foo。
    2. 限定名称,或包含前缀的名称,例如 $a = new subnamespacefoo(); 或 subnamespacefoo::staticmethod();。如果当前的命名空间是 currentnamespace,则 foo 会被解析为 currentnamespacesubnamespacefoo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,foo 会被解析为subnamespacefoo。
    3. 完全限定名称,或包含了全局前缀操作符的名称,例如, $a = new currentnamespacefoo(); 或 currentnamespacefoo::staticmethod();。在这种情况下,foo 总是被解析为代码中的文字名(literal name)currentnamespacefoo。

  • 相关阅读:
    C#:基于WMI查询USB设备信息 及 Android设备厂商VID列表
    C#中 @ 的3种用途
    有关于 使用 命名管道 进行网络 进程间通信 的资料收集
    MySql LAST_INSERT_ID 【插入多条数据时】
    两个“不合理继承 ”的判定标识
    MYSQL 函数 字符串到整数
    Spring MVC 对于@ModelAttribute 、@SessionAttributes 的详细处理流程
    重构,拥有多个构造函数(重载)的类
    vue二级联动select
    gulp.dest用法详解
  • 原文地址:https://www.cnblogs.com/hejun695/p/5489270.html
Copyright © 2011-2022 走看看