对于面向对象编程而言,命名空间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. 2.redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?

    作者:中华石杉 面试题 redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发? 面试官心理分析 这个是问 redis 的时候,最基本的 ...

  2. MySQL truncate含有外键约束的条目报错

    1.报错信息: Cannot truncate a table referenced in a foreign key constraint 2.出现错误操作: truncate table a1; ...

  3. 盛科(Centec)交换机 SmartConfig 特性

    参考 DHCP manual pages DHCP option-66 & option-150 的区别 一. 原理 目前市场上稍微有些实力的交换机厂商,均支持自动化的批量开局部署,虽然具体实 ...

  4. 借助模板类自动实现COM连接点接收器(Sink)

    本文的更新:借助模板类自动实现COM连接点接收器(Sink)更新 (2014-06-09 17:09) 最初的代码源自free2000fly的一个标准的 COM 连接点接收器(Sink)的实现, 使用 ...

  5. 云数据库 Redis 版,知识点

    资料 网址 什么是云数据库Redis版 https://help.aliyun.com/document_detail/26342.html?spm=a2c4g.11174283.6.542.6b11 ...

  6. 玩转jmeter:beanshell必备技能

    beanshell是什么 BeanShell是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型.命令. ...

  7. 04-cmake语法-STREQUAL

    STREQUAL 用于比较字符串,相同返回 true .

  8. ActiveMQ传输协议

    ActiveMQ默认的传输协议是TCP 在activemq的配置文件 /conf/activemq.xml可对配置文件进行修改和查看

  9. python基础之一:input、if、while

  10. 爬虫之selenium模块chrome版本映射表

    驱动及版本对应关系如下: 驱动下载路径见底部: chromedriver版本 支持的Chrome版本v2.43 v69-71v2.42 v68-70v2.41 v67-69v2.40 v66-68v2 ...