如何跨两个文件访问变量

Posted

技术标签:

【中文标题】如何跨两个文件访问变量【英文标题】:How to access a variable across two files 【发布时间】:2013-09-06 11:49:25 【问题描述】:

我有三个文件——global.php,test.phptest1.php

全局.php

$filename;
$filename = "test";

test.php

$filename = "myfile.jpg";
echo $filename;

test1.php

echo $filename;

我可以从 test 和 test1 文件中读取这个变量 include 'global.php';

现在我想在test.php 中设置$filename 的值和我想在test1.php. 中读取的相同值

我也尝试过使用会话变量,但由于两个不同的文件,我无法捕获该变量。

如何实现这一点............

提前感谢您的帮助.....

【问题讨论】:

你能给我们看一些代码吗? IMO,没有理由不这样做。还要记住,每次重新加载页面时变量都是临时的,因此需要重新创建所有变量。 我已经为所有三个文件添加了代码。 你的会话在哪里? 【参考方案1】:

首先在页面顶部开始会话。

将变量分配到会话中。

检查一下并亲自尝试

test.php

<?php
session_start(); // session start
include("global.php");
$filename = "myfile.jpg";
$_SESSION['samplename']=$filename ; // Session Set
?>

test1.php

<?php
session_start(); // session start
$getvalue = $_SESSION['samplename']; // session get
echo $getvalue;
?>

【讨论】:

在为 $filename 赋值后,我正在关闭 test.php 文件。所以会话没有持续 @user2688512 在 session_start 之后包含函数使用【参考方案2】:

用途:

global.php

<?php
if(!session_id()) session_start();
$filename = "test";
if(!isset($_SESSION['filename'])) 
    $_SESSION['filename'] = $filename;

?>

test.php

<?php
if(!session_id()) session_start();
//include("global.php");
$_SESSION['filename'] = "new value";
?>

test1.php

<?php
if(!session_id()) session_start();
$filename = $_SESSION['filename'];
echo $filename; //output new value
?>

【讨论】:

test.php中设置变量名是否需要包含? 感谢@LouieBertoncin,很好的发现。无需在test.php 中包含global.php【参考方案3】:

我认为理解这一点的最佳方法如下: 你有一个文件 index.php 定义了一些变量。

$indexVar = 'sometext';

这个变量在所有 index.php 文件中都是可见的。但是和函数一样,如果你包含其他文件,这个变量是不可见的,除非你指定这个变量的作用域是全局的。

您应该在新文件中重新定义此变量的范围,如下所示:

global $indexVar;

然后,您将能够像在主文件中一样调用它来直接访问。您可以在两个文件中使用“echo”,index.php 和任何其他文件。

【讨论】:

以上是关于如何跨两个文件访问变量的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中,如何跨多个类文件访问声明的对象?

python中各模块变量共享的问题。

如何从docker compose文件中访问env变量

安卓初学,多个窗体Activity之间如何互相访问变量?

Hadoop集群以外的机器如何访问Hadoop集群,进行提交文件,下载文件?

跨多个访问数据库的内部连接