php中命名空间namespace和use
对于面向对象编程而言,命名空间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的更多相关文章
- 关于c++中命名空间namespace
一.定义命名空间: 步骤一:在.h文件中:namespace ns{.......}//将定义的类和全局变量,全局函数写入花括号内. 步骤二:在.cpp文件中: using namespace ns ...
- php中的namespace 命名空间
名字解释: namespace(命名空间),命名空间是从php5.3开始支持的功能.作用主要有两个:1.可以避免类名取得过长.2.当在多个框架配合使用时,同名的类之间不会冲突. 命名空间,看名字就知道 ...
- PHP中的命名空间(namespace)及其使用详解
PHP中的命名空间(namespace)及其使用详解 晶晶 2年前 (2014-01-02) 8495次浏览 PHP php自5.3.0开始,引入了一个namespace关键字以及__NAMESPAC ...
- PHP 命名空间(namespace)
PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物. 不过在PHP当中还是有着相当重要的意义 ...
- Atitit 深入理解命名空间namespace java c# php js
Atitit 深入理解命名空间namespace java c# php js 1.1. Namespace还是package1 1.2. import同时解决了令人头疼的include1 1.3 ...
- PHP 使用命名空间(namespace),实现自动加载
示例: #/DB/MySql.class.php也就是DB文件夹下有MySql.class.php文件 namespace DB; class MySql { public function __co ...
- C++命名空间 namespace的作用和使用解析
一. 为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突. 在 C语言中定义了3个层次的作用域,即文件(编译单元).函数和复合语句.C ...
- linux中的namespace
本文将就namespace这个知识点,进行简单的归纳总结,力求通俗易通.在资料汇总的过程中,参考了许多网上的博客资料,在文章尾部给出相关链接. namespace,命名空间,从名字 ...
- PHP命名空间(Namespace)的使用详解(转)
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
随机推荐
- 跟随腾讯WeTest一起来2019Unreal Open Day!
WeTest 导读 Unreal Open Day 是由 Epic Games 中国一年一度倾力打造的面向虚幻引擎开发者的技术分享活动,是引擎行业规格最高.规模最大.阵容最强的年度盛会之一. 自从 ...
- js执行上下文栈和变量对象
JavaScript执行上下文栈和变量对象 JS是单线程的语言,执行顺序肯定是顺序执行,但是JS 引擎并不是一行一行地分析和执行程序,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段. 例子一 ...
- 【软件工程第三次作业】结对编程:四则运算( Java 实现)
1. GitHub 地址 本项目由 莫少政(3117004667).余泽端(3117004679)结对完成. 项目 GitHub 地址:https://github.com/Yuzeduan/Arit ...
- Java集合学习(10):hashcode() 和 equals()方法
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native int hashCode(); 根据这个 ...
- 设计模式 行为型 - 策略模式 Strategy
策略模式(Strategy) 意图 对象有某个行为,但是在 不同的场景 下,该行为有 不同的实现算法. 就好比你去餐馆吃饭,首页你要通过菜单来选择你想吃的菜,根据你点的菜的不同,在厨房中去做不同的菜. ...
- 爬取 豆瓣电影Top250
目标 学习爬虫,爬豆瓣榜单,获取爬取静态页面信息的能力 豆瓣电影 Top 250 https://movie.douban.com/top250 代码 import requests from bs ...
- flask Gunicorn和uwsgi并发对比(转载)
转载 结果 吞吐量(要求/秒) 响应时间(毫秒) 失误 吞吐量的标准偏差(要求/秒) 尽管uWSGI的性能在高负载下确实有些不稳定,但它看起来像Python应用服务器.uWSGI不仅速度快得离谱,而且 ...
- angular6 使用tooltip
准备 为了使用tooltip,可以安装ng-bootstrap组件,它包含两个依赖: angular:5.0以上版本: bootstrap css: 4.0版本. 安装好bootstrap之后,更新a ...
- properties文件属性值@Value注解为 java entity属性赋值
一.使用@Value为 java entity类中的非static属性赋值 举个栗子,一目了然 1.1 properties文件 1.2 servlet.xml 文件增加的配置: 1.2.1 serv ...
- np.random 系列函数
1 random() # 产生区间 [0, 1) 均匀分布的浮点数样本值 np.random.seed(42) 2 rand(d0, d1, ..., dn) # 产生区间 [0, 1) 均 ...