对于面向对象编程而言,命名空间namespace和use的概念非常重要.

1.根命名空间是反斜线 \ ,有点类似linux中的根目录 / 的那种感觉,但使用var_dump()函数打印时其实是空字符串

 var_dump(__NAMESPACE__);
//string(0) ""

2.而对于根下的子代命名空间,则会显示名称.

 namespace App;
var_dump(__NAMESPACE__);
string(3) "App"

3.同一文件中可以有多个命名空间(仅从语法角度讨论).

 <?php
namespace App;
var_dump(__NAMESPACE__);
namespace Admin;
var_dump(__NAMESPACE__);
namespace Shop;
var_dump(__NAMESPACE__);
//D:\workspace\mvc\test.php:3:
//string(3) "App"
//D:\workspace\mvc\test.php:5:
//string(5) "Admin"
//D:\workspace\mvc\test.php:7:
//string(4) "Shop"

4.在同一文件中,在某个命名空间中使用另一个命名空间的类.

 <?php
namespace App;
var_dump(__NAMESPACE__);
namespace Admin;
var_dump(__NAMESPACE__);
class A{
public static $name = 'classA';
}
namespace Shop;
var_dump(__NAMESPACE__);
echo \Admin\A::$name;
//D:\workspace\mvc\test.php:3:
//string(3) "App"
//D:\workspace\mvc\test.php:5:
//string(5) "Admin"
//D:\workspace\mvc\test.php:10:
//string(4) "Shop"
//classA

在命名空间Shop中使用命名空间Admin的类A,需要在Admin前方加反斜线 \ ,表示从根命名空间查找,如果没有最前面的反斜线,则会报错.

5.文件A引入了另一个文件B,文件A中的命名空间不受影响.

文件B:

 <?php
namespace App;
var_dump(__NAMESPACE__);
namespace Admin;
var_dump(__NAMESPACE__);
class A{
public static $name = 'classA';
}
namespace Shop;
var_dump(__NAMESPACE__);
echo Admin\A::$name;

文件A:

 <?php
require 'B.php';
var_dump('k'.__NAMESPACE__.'k');
//string(2) "kk"

文件B中定义了很多命名空间,当文件A引入文件B后,并没有受到影响.

6.在文件2中使用文件1中某个命名空间的类

 <?php
/*
** 1.php
*/
namespace A;
class Test{
const N = 1;
}
namespace B;
class Test{
const N = 2;
}
 <?php
/*
** 2.php
*/
require_once '1.php';
echo \A\Test::N;//1
echo PHP_EOL;
echo \B\Test::N;//2
 <?php
/*
** 2.php
*/
require_once '1.php';
use \A\Test;
echo Test::N;//1
echo PHP_EOL;
echo B\Test::N;//2

php中命名空间namespace和use的更多相关文章

  1. 关于c++中命名空间namespace

    一.定义命名空间: 步骤一:在.h文件中:namespace  ns{.......}//将定义的类和全局变量,全局函数写入花括号内. 步骤二:在.cpp文件中: using namespace ns ...

  2. php中的namespace 命名空间

    名字解释: namespace(命名空间),命名空间是从php5.3开始支持的功能.作用主要有两个:1.可以避免类名取得过长.2.当在多个框架配合使用时,同名的类之间不会冲突. 命名空间,看名字就知道 ...

  3. PHP中的命名空间(namespace)及其使用详解

    PHP中的命名空间(namespace)及其使用详解 晶晶 2年前 (2014-01-02) 8495次浏览 PHP php自5.3.0开始,引入了一个namespace关键字以及__NAMESPAC ...

  4. PHP 命名空间(namespace)

    PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物. 不过在PHP当中还是有着相当重要的意义 ...

  5. Atitit  深入理解命名空间namespace  java c# php js

    Atitit  深入理解命名空间namespace  java c# php js 1.1. Namespace还是package1 1.2. import同时解决了令人头疼的include1 1.3 ...

  6. PHP 使用命名空间(namespace),实现自动加载

    示例: #/DB/MySql.class.php也就是DB文件夹下有MySql.class.php文件 namespace DB; class MySql { public function __co ...

  7. C++命名空间 namespace的作用和使用解析

    一. 为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突. 在 C语言中定义了3个层次的作用域,即文件(编译单元).函数和复合语句.C ...

  8. linux中的namespace

         本文将就namespace这个知识点,进行简单的归纳总结,力求通俗易通.在资料汇总的过程中,参考了许多网上的博客资料,在文章尾部给出相关链接.      namespace,命名空间,从名字 ...

  9. PHP命名空间(Namespace)的使用详解(转)

    对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...

随机推荐

  1. elasticsearch安装中文分词器插件smartcn

    原文:http://blog.java1234.com/blog/articles/373.html elasticsearch安装中文分词器插件smartcn elasticsearch默认分词器比 ...

  2. unity点击按钮弹出操作提示界面

    1.首先在相应的位置添加一个(UGUI控件)image,在image下添加文本框和按钮设计弹出框内容如图: 2.新建C#脚本UITips using System.Collections; using ...

  3. 微信小程序+php 授权登陆,完整代码

    先上图        实现流程: 1.授权登陆按钮和正文信息放到了同一个页面,未授权的时候显示登陆按钮,已授权的时候隐藏登陆按钮,显示正文信息,当然也可以授权和正文分开成两个页面,在授权页面的onlo ...

  4. 使用aptitude安装软件

    linux的版本依赖问题很令人纠结,不过我们可以通过使用aptitude软件包管理器来解决这个依赖问题,aptitude是可以选择合适的版本与匹配软件安装.

  5. JavaScript中数组去重汇总

    1. 简单的去重方法,利用数组的indexOf下标属性来查询 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ func ...

  6. matplotlib 中的 colors 和 cmaps

    matplotlib 中的 148 种颜色 matplotlib 中的 160 种颜色映射 1.matplotlib中的 148 种颜色 import matplotlib as plm import ...

  7. django+sqlite进行web开发(二)

    模板 前面的例子中,我们是直接将HTML写在了Python代码中,这种写法并不可取.我们需要使用模板技术将页面设计和Python代码分离. 模板通常用于产生HTML,但是Django的模板也能产生任何 ...

  8. java Atomic compareAndSet部分原理分析

    以AtomicLong的compareAndSet方法举例.先说结论:如果CPU支持,则基于CPU指令(CMPXCHG8)实现:否则使用ObjectLocker锁实现. 分析过程如下: 该方法在jdk ...

  9. 08-人脸识别-FaceNet-classify.py代码阅读(说明见注释)

    """An example of how to use your own dataset to train a classifier that recognizes pe ...

  10. 【Linux】bat文件如何执行

    绝对路径,"/home/myDir/xxx.bat" OR 所在的目录,:"./xxx.bat".