【问题标题】:Can i make variable accessible in two files without include?我可以在没有包含的情况下在两个文件中访问变量吗?
【发布时间】:2019-06-24 08:39:08
【问题描述】:

我想在文件 a.php 中创建变量

 <?php
 $string = "hi";
 ?>

并在文件 b.php 中使此代码在不包含 a.php 的情况下工作

<?php
echo $string;
?>

编辑:其中一个文件(a.php 应该在 cli 上运行并执行一些操作(它将在 while true 循环中)并且 b.php 应该在 Web 界面的访问者一侧打开

谢谢 ;)

【问题讨论】:

  • 这是可能的,但它真的很hacky。坚持包含/要求,这就是他们的目的。 PHP 之外的其他选项包括,例如环境变量。但这取决于您的用例。
  • @Jonnix 我不会说$_SESSION 是 hacky - 虽然我不建议它用于这个..
  • 你对 include 有什么不满?
  • 你可以使用$_SESSION,打开它,在文件1中添加值并在文件2中获取它
  • @treyBake 取决于用例。我没有读到这个问题是说这两个文件是独立运行的。如果它们自己运行,那么可以肯定,$_SESSION 通常是一个完全有效的选项。

标签: php variables


【解决方案1】:

如果您想在不使用 IncludeRequire 的情况下缩放两个文件中的变量,唯一的方法是使用 cookiessession 变量,或者如果情况允许,使用 GETPOST 数据。

但我猜你只是想轻松地使用另一个文件中的变量。

使用会话变量

在你的 a.php

<?php
if(!session_id()) session_start();
$string = "hi";
if(!isset($_SESSION['hello'])) {
    $_SESSION['hello'] = $string;
}
?>

你可以在 b.php 中使用它:

<?php
if(!session_id()) session_start();

if(isset($_SESSION['hello']){
    echo $_SESSION['hello'];
}

?>

【讨论】:

  • 我不能使用会话,因为文件 (a.php) 应该在命令行中运行 :( 并且文件 b.php 应该加载到用户端
【解决方案2】:

另一种 hacky 方式:您可以创建一个“传输”文件来写入 (file_put_content($fileName, $fileContent, LOCK_EX)) 和读取 (file_read_content($fileName)) 来自其他文件。标记要写入的文件很重要。只能有一个进程同时写入文件。

检查文件被锁定:Test if file is locked

【讨论】:

  • 这是一个很好的方法,但是,读写会减慢代码的速度,而且我想像数组一样传输变量,谢谢
  • 文件可以包含json或者序列化对象。毕竟,您可以使用单独的服务,例如 memcached (memcached.org)。
  • 开销?它与会话文件的读/写相同,当它是包含的 php 文件时,opcache 将自动缓存它。
猜你喜欢
  • 1970-01-01
  • 2011-01-14
  • 2022-01-17
  • 2021-11-17
  • 1970-01-01
  • 2018-03-20
  • 2017-02-04
  • 1970-01-01
  • 2020-09-17
相关资源
最近更新 更多