php命名空间是在5.3版本后加入的,命名空间反过来就是空间命名,在这里的空间命名就像window下的文件夹命名,命名空间用关键字namespace来定义。在这里用文件夹举三个例子,比如相对于test文件夹下面的home.txt文件,他相对于文件夹的路径是 test/home.txt,当前文件下他的文件名是 home.txt,他的绝对路径是/test/home.txt.

命名空间也是用三种方式来表示:

完全限定符\test\home,像文件夹中的绝对路径;

限定名称 test\home,像相对文件的目录路径;

非限定名称 home,像前面的直接使用文件名。

一直以来不太理解官方的意思,今天自己做了测试,表达一下自己的理解:

我认为命名空间就好像地球,定义命名空间就像是对国家的定义,使用命名空间就像是出国,第三个比喻可能不是很恰当,上个例子:

下面是当前访问程序代码:

结果:

总结:定义命名空间就好像告诉我们现在在哪里,上面三个文件各自定义不同的命名空间,就好像三个不同的国家,他们中的物品不可能被另一个国家的人使用,前提是必须被带到另一个国家,这里就用到了使用命名空间,官方表示 类、函数、常量都受命名空间的影响,但是我这里却没有作用,只对类有影响(下面代码

<?php
/**
* 当前文件名 word.php
*/
namespace japan;
use usa\My;
require_once("china.php");
require_once("usa.php"); // echo IP,'<br/>';
// echo MyFunction(),'<br/>';
echo My::who(),'<br/>';

上面代码的结果是: usa\My::who

如果定义命名空间为china:

<?php
/**
* 当前文件名 word.php
*/
namespace china;
use usa\My;
require_once("china.php");
require_once("usa.php"); echo IP,'<br/>';
echo MyFunction(),'<br/>';
echo My::who(),'<br/>';

结果为:

192.168.0.17
china\MyFunction
usa\My::who

根据以上总结,命名空间的定义就是国家的定义,在程序中就像一个大的代码库,如果想使用另一个代码库的类,就需要使用命名空间;

命名空间要求:

命名空间前面不要出现任何字符(包括空白)

第一次了解命名空间,如果上面有些定义说的不好,请留下您的意见,我对命名空间还有很多的疑问,比如:怎么使用命名空间影响常量和函数,如果你知道,或者你在哪里看到过好的解释,请给我留言

什么是php命名空间的更多相关文章

  1. 【.net 深呼吸】细说CodeDom(3):命名空间

    在上一篇文章中,老周介绍了表达式和语句,尽管老周没有把所有的内容都讲一遍,但相信大伙至少已经掌握基本用法.在本文中,咱们继续探讨 CodeDom 方面的奥秘,这一次咱们聊聊命名空间. 在开始之前,老周 ...

  2. C++中的命名空间

    一,命名空间(namespace)的基本概念以及由来 1.什么是标识符: 在C++中,标识符可以是基本的变量,类,对象,结构体,函数,枚举,宏等. 2.什么是命名空间: 所谓的命名空间是指标识符的可见 ...

  3. PHP 面向对象编程和设计模式 (5/5) - PHP 命名空间的使用及名称解析规则

    PHP高级程序设计 学习笔记 2014.06.12 命名空间概述 PHP 在 5.3.0 以后的版本开始支持命名空间.什么是命名空间?从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这 ...

  4. JavaScript权威设计--命名空间,函数,闭包(简要学习笔记十二)

    1.作为命名空间的函数 有时候我们需要声明很多变量.这样的变量会污染全局变量并且可能与别人声明的变量产生冲突. 这时.解决办法是将代码放入一个函数中,然后调用这个函数.这样全局变量就变成了 局部变量. ...

  5. .Net 序列化(去除默认命名空间,添加编码)

    1.序列化注意事项 (1).Net 序列化是基于对象的.所以只有实例字段呗序列化.静态字段不在序列化之中. (2)枚举永远是可序列化的. 2.XML序列化时去除默认命名空间xmlns:xsd和xmln ...

  6. [Yii2.0] 以Yii 2.0风格加载自定义类或命名空间 [配置使用Yii2 autoloader]

    Yii 2.0最显著的特征之一就是引入了命名空间,因此对于自定义类的引入方式也同之前有所不同.这篇文章讨论一下如何利用Yii 2.0的自动加载机制,向系统中引入自定义类和命名空间.本文旨在抛砖引玉,如 ...

  7. Spring 设值注入 构造注入 p命名空间注入

    注入Bean属性---构造注入配置方案 在Spring配置文件中通过<constructor-arg>元素为构造方法传参 注意: 1.一个<constructor-arg>元素 ...

  8. python命名空间

    在"python之禅"那几句话中有一句:namespace is a good thing. python对于命名空间的处理非常简单,下面的内容不一定真实,完全是我根据现象推测出来 ...

  9. thinkphp 命名空间

    什么是命名空间?从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这种抽象概念.例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色.具体举个例子,文 ...

  10. 命名空间jquery

    命名空间的意思就是 同一个元素有绑定了2个相同的事件,比如2个scroll,这个时候你做其他交互的时候只想触发第二个scroll事件  就可以用命名空间做了 <button id="b ...

随机推荐

  1. 3d max export for unity3d

    3d max export for unity3d @by 广州小龙 1.单位问题 建模的时候,设置unity的Units Setup的单位是Meters,导出FBX文件的时候,单位为厘米(Centi ...

  2. Keil C51程序调试过程

    用Keil C51编写程序时,经常需要调试,如果不是经常用这个软件的话,很容易忘记这些调试步骤,现在举一个例子“验证延迟函数delay()使其延迟的时间为500ms”说明. 源程序写完后,就可以调试了 ...

  3. JavaScript如何获取css属性

    原文:JavaScript如何获取css属性 在web开发中,很多时候我们需要用JavaScript对网页的样式进行修改,接下来,我们就来看一下我们该如何访问css属性,针对不同情况及案例来进行分析. ...

  4. <转>SFTP 和FTPS的区别是什么?

    SFTP 和FTPS都是为ftp连接加密,协议非常相似. 一个是借助ssl协议加密,一个时借助ssh加密. ssl是为http/smtp等加密设计的,ssh是为telnet/ftp等加密.建立传输通道 ...

  5. 【HDOJ】1150 Machine Schedule

    匈牙利算法. #include <stdio.h> #include <string.h> #define MAXNUM 1005 char map[MAXNUM][MAXNU ...

  6. 性能指标--并发用户数(Concurrent Users)

    并发用户数是指:在某一时间点,与被测目标系统同时进行交互的客户端用户的数量. 并发用户数有以下几种含义: 1. 并发虚拟用户数(Concurrent Virtual Users,Users_CVU) ...

  7. SQL Server阻止了对组件xp_cmdshell过程的解决方案

    使用SQL tools连接sqlserver时候出现以下问题: SQL Server阻止了对组件xp_cmdshell过程的解决方案错误描述:SQL Server阻止了对组件‘xp_cmdshell’ ...

  8. lightoj 1018 dp

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1018 #include <cstdio> #include <cst ...

  9. 详解集群内Session高可用的实现原理

    在这个互联网高度发达的时代,许多应用的用户动辄成百上千万,甚至上亿.为了支持海量用户的访问,应用服务器集群这种水平扩展的方式是最常用的.这种情形下,就会涉及到许多单机环境下完全不需要考虑的问题,这其中 ...

  10. MySQL5.5 所支持的存储引擎

    本博文的主要内容有 .存储引擎的概念 .MySQL5.5 所支持的存储引擎 .操作默认存储引擎 .选择存储引擎 与其他的数据库软件不同,MySQL数据库软件提供了一个名为存储引擎的概念,由于存储引擎是 ...