php如何通过命名空间使用其他文件中的变量

比如有个 a.php 这样定义
<?php
namespace np1; $foo = 'foo'; const foofoo = 'foofoo';
另外有个 b.php 这样定义
<?php
namespace np2; $bar = 'bar'; const barbar = 'barbar';
在c.php定义
<?php
require "a.php" ; require "b.php";
$baz = np1\$foo; $qux = np2\$bar;
echo "$baz and $qux !"

三个文件在同一目录中,已经被正确require了,运行会出错!
而c.php 中输出a.php 和b.php 中的常量,比如c.php如下:
<?php
$baz = np1\foofoo; $qux = np2\barbar;
echo "$baz and $qux !"

则能正确输出。
所以问题来了,怎样才能在c.php通过命名空间标识使用a.php 和 b.php中的变量$foo和$bar .
好吧,是我问题没有提清楚。试了下,直接 echo "$foo"; 是可以输出的!但是既然
$foo是命名空间np1中定义的变量,为什么在c.php中使用时不能加上命名空间的名字呢,比如这样 echo np1\$foo;

但是相反,如果a.php 中定义了一个类和一个常量,比如a.php 这样定义:

<?php
​    ​namespace np1; 
​    ​​$foo = 'foo';  //变量
​    ​const foofoo = 'foofoo'; //常量

class C1{  //类
public function __construct($name, $time)
{
    echo "It's echoing from class C1.<br/> your name: $name, and your login     ​    ​    ​          time: $time <br/>";


}
​ 
​public function saysth(){
​    ​echo "echoing from function saysth of np1\C1 <br/>";
​}

}

在c.php文件中可以通过命名空间np1使用文件a.php中的常量 foofoo和类C1但是无法通过命名空间使用变量$foo .
比如c.php 这样

<?php
require "a.php" ;
require "b.php";
$baz = new np1\C1("leon",time());
$qux = np1\foofoo;

$baz.saysth();
echo "$qux
";

上述c.php能够正常使用np1中的类C1和常量foofoo, 但是为什么不能通过np1\$foo 使用np1中的变量$foo 呢,搞不懂!不信大家可以试试.

设想一下如果b.php文件和a.php文件中同有名为$foo的变量 ,这样在c.php 直接使用$foo而不加命名空间限定,程序怎么判断这个变量是哪个文件定义的呢(我试了一下谁require在后输出谁的变量)?

1个回答

你可以用框架,,在基类里面去定义,就可以了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何定义使用PHP 命名空间?
PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物。 不过在PHP当中还是有着相当重要的意义。 PHP 命名空间可以解决以下两类问题: 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。 为很长的标识符名称(通常是为了缓解第一
PHP命名空间的使用,PHP命名空间实例
PHP命名空间的使用,PHP命名空间实例 PHP命名空间简单案例,主要在于理解命名空间的使用方法
php命名空间中别名的使用
MYSQL中可以为字段和表名等取别名如: 1)SELECT a.username,a.order FROM orders AS a INNER JOIN user AS b ON a.username=b.username;  --为表取别名   2)SELECT COUNT(goods_id)  AS totalGoods FROM tdb_goods; --为字段取别名   1)中
如何引用其他文件中的变量
rt,在一个文件中定义的变量如何aaa DWORD 1rn想在另一个文件中使用,该如何做rn我试了在inc文件中写上extern aaa:DWORD,但是链接仍然报错:rnTest.obj : error LNK2001: 无法解析的外部符号 _aaa
PHP中变量的使用
                                  1.变量的命名规则     a.变量不需要指定数据类型     b.变量名必须以$开头     c.命名规则:由英文字母,数字,下划线组合而成,但不能以数字开头     d.对大小写敏感2.变量的简单实用 &amp;lt;?php $name = '张三';//直接使用变量,没有指定数据类型 $age = 20; //输出变量的值 ...
修改其他文件中的变量
#思路:将原文件里的内容读取,然后通过下标修改内容,二次覆盖写入 user=&quot;lm&quot; def update_other_file_name(file,index,new_name): import time t=[] with open(file, 'r')as f1: text = f1.readlines() text[index]='...
php class中引用其他文件中的变量
存放变量的文件FriendlyErrorMsgConfig.php &lt;?php $local_error_msg_cn = [ "ERR MOBILE PHONE" =&gt; "手机号错误", "ERR TOKEN" =&gt; "登录状态过期,请重新登陆", ]; $global_error_msg = [ "cn" =&gt; $local_error_...
php的命名空间的use 使用
今天搞到头都晕了,搞不懂 use这个关键字i 导入的是空间还是类?rn如果是导入空间的话 为什么rn在use 之后使用了rn echo __namespace__; 输出的还是当前的命名空间的名字 不是导入的空间的名字呢? 求解答 各位大哥哥rn在线等哦rn
php 命名空间使用使用问题
test1.php:rn
C++ 使用命名空间中变量出问题。
[color=#FF0000]tex.h:[/color]rn[code=C/C++]#ifndef __TEX_H__rn#define __TEX_H__rn#include rnnamespace Texrn IDirect3DTexture9* Textures[7] = 0, 0, 0, 0, 0, 0, 0;// texture for each subsetrn void createTexture(IDirect3DDevice9* Device);rn;rn#endif[/code]rn[color=#FF0000]tex.cpp:[/color]rn[code=C/C++]#include "tex.h"rnrnvoid Tex::createTexture(IDirect3DDevice9* Device)rnrn //...修改Textures[7]rn[/code]rnrncube.hrn[code=C/C++]#ifndef __cubeH__rn#define __cubeH__rn#include rn#include rn#include rnrnclass Cubernrnpublic:rn Cube(IDirect3DDevice9* device,D3DXVECTOR3 position, int tex[6]);rn ~Cube();rn bool draw(D3DXMATRIX* world, D3DMATERIAL9* mtrl);rnprivate:rn IDirect3DDevice9* _device;rn ID3DXMesh* _mesh;rn static const DWORD _numSubsets;rn std::vector _tex;rn;rn#endif //__cubeH__[/code]rncube.cpprn[code=C/C++]rn#include "cube.h"rn#include "vertex.h"rn#include "tex.h"rn#include "d3dUtility.h"rnrnconst DWORD Cube::_numSubsets = 6;rn//extern IDirect3DTexture9* Textures[7];rnCube::Cube(IDirect3DDevice9* device,D3DXVECTOR3 position,int tex[6])rn //...rn //初始化成员变量,rnrnrnCube::~Cube()rnrn d3d::Release(_mesh);rnrnrnbool Cube::draw(D3DXMATRIX* world, D3DMATERIAL9* mtrl)rnrn if( world )rn _device->SetTransform(D3DTS_WORLD, world);rn if( mtrl )rn _device->SetMaterial(mtrl);rnrn for(int i = 0; i < _numSubsets; i++)rn rn _device->SetTexture( 0, Tex::Textures[_tex[i]] );rn //此处出现问题,我想用命名空间Tex中的变量Textures,却出现重定义的问题rn _mesh->DrawSubset( i );rn rn return true;rn[/code]rn[color=#FF0000]main.cpp:[/color]rn[code=C/C++]rn#include "d3dUtility.h"rn#include "vertex.h"rn#include "cube.h"rn#include "camera.h"rn#include rn#include "tex.h"rnbool Setup()rnrn //.....rn Tex::createTexture(Device);rn //.....rnrnrnbool Display(float timeDelta)rnrn if( Device )rn rn Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff0000ff, 1.0f, 0);rn Device->BeginScene();rn for(int x=0;x<3;x++)rn rn for(int y=0;y<3;y++)rn rn for(int z=0;z<3;z++)rn rn if(Box[x][y][z])rn Box[x][y][z]->draw(&CubeWorldMatrix, 0);//调用drawrn rn rn rn Device->EndScene();rn Device->Present(0, 0, 0, 0);rn rn return true;rnrn[/code]rnrn1>正在链接...rn1>main.obj : error LNK2005: "struct IDirect3DTexture9 * * Tex::Textures" (?Textures@Tex@@3PAPAUIDirect3DTexture9@@A) 已经在 cube.obj 中定义rn1>tex.obj : error LNK2005: "struct IDirect3DTexture9 * * Tex::Textures" (?Textures@Tex@@3PAPAUIDirect3DTexture9@@A) 已经在 cube.obj 中定义rn1>D:\project\D3DTest\Release\D3DTest.exe : fatal error LNK1169: 找到一个或多个多重定义的符号rn
06 PHP 命名空间 使用命名空间 基础
<strong></strong>n<p>n <strong>PHP手册 入门 第五季 命名空间</strong><strong>,首先一起了解了命名空间的用途,已总体认识命名空间的。然后学习了命名空间的定义,多个命名空间的定义,namespace关键字以及比较重要的use导入和别名。</strong>n</p>n<p>n <strong>通过手册系统学习,和大家一起掌握命名空间。</strong>n</p>n<p>n <br /></p>n<p>n <br /></p>n<p>n <strong><br /></strong>n</p>
html中如何使用php的变量
如果我做一个页面,php代码和html语言是结合使用的,比如我用php代码在数据库中取到各一个值,如何将其显示在html中的一个text中???
php命名空间namespace的使用,和命名空间的作用
http://php.net/namespaces.basics http://php.net/manual/zh/language.namespaces.fallback.php
php中命名空间详解
* 一、定义命名空间 * 命名空间主要针对:类,函数和常量,因为他们的作用域是全局的,产生命名冲突的可能性很大 * 1. 关键字: namespace * 作用:1. 定义命名空间; 2.显示的访问当前命名空间,类似于self; * 2. 常量: __NAMESPACE__: 当前命名空间字符串,全局为空字符 * 3. 声明空间前不宜有除了declare之前的语句 ...
PHP中的命名空间
命名空间PHP中的命名空间,简单来说就像是文件夹。在同一个PHP脚本文件中不能引用相同名字的类或者函数,但是由于开发过程中会使用第三方的SDK或者是团队合作开发,难以避免会有命名重复的可能。而命名空间的引入就是为了解决这一问题,命名空间就相当于文件夹,同一个文件夹中不能创建相同名字的文件或者文件夹,但是如果相同名字的文件夹在不同文件中就不存在这一问题。引用一段来自PHP官方文档的话。 什么是命名
php中的命名空间namespace
==============================================      php中的命名空间namespace ============================================== 一、命名空间概述:     什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。     例如,在操作系
php中的命名空间
命名空间只对类,函数,conts定义的常量起作用 在命名空间内三种方式访问元素 (1)非限定名称 访问最近的命名空间(就近访问上边与其挨着最近空间) (2)完全限定名称 相当于绝对路径引入 (3)限定名称 相当于相对路径引入 元素引入 use 空间\...\元素; 空间引入 可以解决完全限定名称访问元素的繁琐性,但是还需要通过“限定名称”方式访问,仍然不够简便,如
PHP中命名空间的引用
(1)在介绍引用之前要知道命名空间中几个术语的概念。 1)完全限定名称 任何PHP代码都可以引用完全限定名称,它是一个命名空间反斜线开头的标识符,如: \c\root\sub1,\c\root\sub1\returnFunctionName()等。 2)限定名称 至少有一个命名空间分隔符的标识符,如sub1\returnClassName。 3)非限定名称 没有命名空间分割符的标识符
PHP中命名空间
命名空间的意义: 命名空间最主要的目的就是解决函重名的问题
.cpp文件中定义的变量,其他文件如何访问到?
如题,谢谢
php中命名空间(namespace)的作用和使用
1.命名空间的作用: 在PHP中函数、类、常量是不允许同名的。为了解决这三者的同名问题,所以出现了命名空间. 其实不仅仅是php,其他语言也有类似的使用。比如JavaScript中: 我们来详细的讲解一下PHP中的命名空间: 语法:namespace 空间名\空间名; 说明: 用于定义空间名;如果一个php文件中,第一个空间的定义义必须放在第1行。如果所要定义的空间已存在,则是进入空间...
PHP命名空间中使用Exception报错not found
当一个php文件声明了命名空间,则此文件中使用类时,必须指定是在哪个命名空间中,否则就会报错,原因是在当前空间中找不到这个类,PHP核心类也会有这个问题,示例:namespace TestExc;try { throw new Exception('throw exception'); } catch(Exception $ex) { echo $ex->getMessage();
跨文件的命名空间的使用
把变量Value放到1.cpp的命名空间下,在2.cpp中main函数中访问变量Value,不允许直接访问和赋值(调用函数访问) 1.h   #ifndef _ONE_H #define _ONE_H namespace myspace {     extern int value;     int getValue();     void setValue(int x);       ...
PHP中命名空间的创建-使用namespace
PHP中命名空间的创建要使用关键字namespace 如下面在sub1.php文件下创建命名空间为root\sub1 需要注意的是,当前脚本文件的第一个命名空间前面不能有任何代码,如下面的写法是错误的。
php闭包中使用变量
$email = self::$userEmail; $flag = Mail::raw('邮件内容:"' . $Originpsw . '', function($message) use($email){ $to = $email; $message->to($to)->subject('内容
php中变量的使用问题
从数据库中获得了各区的销售金额和销售数量,要对数量和金额求和。代码如下:rn[code=php]rnQueryLastMonth();rn $result1=$db->QueryLastMonthByArea();rn $all_sales_amount;rn $all_sales_money;rn echo 'begin '.$all_sales_amount;rn while($row1= sybase_fetch_assoc($result1))rn rn ?>rn rn rn rn rn --rn --rn rn rn ";rn rn ?>rn rn rnrnrnrn rn 销售简报rn 总金额: rn 总数量: rn[/code]rnrn$all_sales_amount为销售数量,$all_sales_money为销售金额。但运行的结果销售数量计算出的结果是错误的,销售金额总是为0(如下)请问上面的代码出了什么问题?rn[img=https://img-bbs.csdn.net/upload/201401/19/1390093196_479906.png][/img]
jsp中如何引用其他文件中的变量(包括三维数组)?
我这里有个程序,一个JSP文件a.jsp中生成了另外一个文件b.jsp需要的变量(包括有三维数组),那么在b.jsp中应该如何引用a.jsp中的变量和数组?rn我试过2中方法:rn1。<%@ include file="a.jsp" %>rn报错,说b.jsp中引用的a.jsp中的变量和三维数组都没有定义;rn2.rn报错,说b.jsp中引用的a.jsp中的三维数组没有定义!rn请问,为何如此,要达到目的,应该如何解决,谢谢!rnrn
php中调用其他文件中的函数
例如:我在common.php中写了一个函数rnrnfunction get_provide_name($provide, &$pname)rnrn if($provide == 0)rn rn $pname = "中国移动";rn rn else if($provide == 1)rn rn $pname = "中国联通";rn rn else if($provide == 2)rn rn $pname = "中国电信";rn rn elsern rn $pname = "未知";rn rnrnrn我在a.php中调用这个函数:rnget_provide_name($provide, $pname);rnrn如下使用:rn'.$pname.'rnrn总是显示方框。是为什么。rn我现在只能把这些公共函数拷贝到 a.php中才会正常。rnrn
php基础之面向对象之命名空间的使用
本课程位衔接第二季的课程,主要是讲了php的处理字符串以及处理数组的系统函数,以及面向对象。
使用composer自动加载php命名空间
上一篇介绍了php的命名空间,但是每次都要使用一个spl_autoload_register()或autoload()方法,每个要使用命名空间的地方都要加这个方法太麻烦,有没有简单的方法呢?有,可以使用composer自动加载命名空间。 要在php项目中使用包依赖管理工具composer首先得安装,这个自行搜索,就不多说了。安装之后再项目根目录下创建一个composer.json文件。 目录结构
PHP命名空间namespace使用详解
在定义了命名空间的类中要创建php自带类的对象时,需要在类名前加一斜杠 ‘\’,  如: $objZip = new \ZipArchive();
PHP中如何定义这样的变量在其他页面调用
我想给网站做个全局变量,rn比如这样子的;rn//联系方式rnT_BanQuan ="版权所有(c)2007 上海博才网络徐州分公司"rnT_DiZhi ="徐州市中山南路山水豪庭1702室"rnT_Icp ="苏ICP备07502094号"rnT_KeFuDianHua ="0516-82281008"rnT_ChuanZhen ="0516-82322526"rnT_KeFuMail ="tt21_service@126.com"rn让后在其他PHP页面调用
PHP 命名空间使用--规约探索
探索一:namespace 有无的区别: 假设:在一个Application.php 中定义一个class Application, 且申明命名空间,如下: &lt;?php namespace app; class Application { protected function getClass() { return __CLASS__.PHP_...
aspx文件中如何使用变量?
比如一个连接rnhttp://www.csdn.net/index.aspx?xxx="变量"rn这个变量应该如何定义?rn.cs文件中需要做什么工作?
在PHP中如何连接字符串和变量?
在ASP中是用“&”或“+”,最好写上示例代码,谢谢 rn
PHP中如何定义变量?
废话不多说 直接贴代码:rnrn$dbname1 ";rn //echo " $this->$dbname0";rnrnrnrnrn?>rnrn我调用test方法$dbname1 可以正常打印出来rnrn但是解开下面的注释 无法打印 $dbname0 请问我哪个地方写错了 该怎么写?
调用其他文件中变量的问题
rn我有三个文件rnrn[code=C/C++]rn//1.hrninit(IplImage* a)rnrn a=load();rnrnrnblt(IplImage *a)rnrn blt(hdc,a);rnrnrn//2.hrnIplImage *a=NULL;rnrnf()rnrn init(a);rn blt(a);rnrnrnrn//3.cpprn#include"1.h"rn#include"2.h"rnrnmain()rnrnf();rnrnrnrn[/code]rnrn问题是为什么我进行f()的时候总是在blt(a)中说a没有初始化.rnrn当然初始化我绝对是没有问题的.因为如果我将程序改成如下情况可以正常运行 为什么呢~ 请大家教我 谢谢~rnrn[code=C/C++]rn//1.hrninit(IplImage* a)rnrn a=load();rn blt(a);rnrnrnblt(IplImage *a)rnrn blt(hdc,a);rnrnrn//2.hrnIplImage *a=NULL;rnrnf()rnrn init(a);rn //blt(a);rnrnrnrn//3.cpprn#include"1.h"rn#include"2.h"rnrnmain()rnrnf();rnrn[/code]rn
中如何使用变量
-
PHP命名空间
1.为什么要用PHP命名空间 加入不使用namespace,那么每个类在一个项目中的名字就必须是固定的。因为PHP在new的时候不管是调用autoload还是调用已加载过的类,都存在一个类名对应的文件。没有用namespace的时候,我们会用各种命名鬼泽来区分不同的类。 引入namespace之后就可以将这个有效的避免了,一个namespace就相当于对应一个文件路径,查找这个类的时候,就会去
php命名空间
什么是命名空间?借用官方文档的一段话:从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表

相似问题

1
我想实现在头文件中该变量怎么办
3
C语言中多文件的全局变量声明问题
7
java中变量+变量等于变量,那么变量.变量等于什么
1
android项目中_做什么操作,r文件会自动生成相应的静态变量
3
关于Java定义变量的命名方法
2
同一个java文件中,类外面定义的变量都是公用的,
1
全局变量释放的顺序怎样的?
1
ORACLE 中定义全局变量,在其他各个PROCEDURE中使用
2
如何把一个文本文件中的数据赋值给一个变量
1
命名的数组下标是怎么实现的,类似treenode那样的下标为什么可以用变量名?
1
VB6.0中除了控件可以使用命名的数组变量以外,函数中怎么也使用命名的数组变量?
1
安卓的hal层中一个文件要访问另一个文件中的变量,访问不到啊,在线等!
1
安卓的hal层中的两个文件怎样公用一个变量
2
定义主程序变量的时候怎么判断这个变量的变量名是不是在ocx的事件定义中被使用了?
2
vb中怎么控制不同变量的定义所使用的变量名不同 ?
2
vb编程软件制作怎么看一个ocx的空间里定义了什么变量,以及变量定义的类型?
2
当参数和ocx的变量名重合的时候,ocx中的变量是不是自动会调用函数里定义的参数的变量?
2
vb编程语言的ocx控件怎么从主程序exe文件的内存中拿到变量?
2
在vb编程环境中怎么根据控件所在的ocx,定义文件名模块可以放入主程序中调用的变量?
2
vb编程语言中如何在定义的主窗体中使用ocx传入的内存的变量,动态接收变量?