【问题标题】:PHP Identical Variable NamesPHP 相同的变量名
【发布时间】:2024-05-03 00:00:02
【问题描述】:

对于 PHP,我真的很缺乏经验,希望有人可以为我澄清一些关于 PHP 中如何处理变量的问题。

我有一个我创建的 PHP Web 应用程序,需要快速复制,所以我只需将这个应用程序复制并粘贴到同一服务器上的一个新文件夹中。

我想知道如果 2 个不同文件夹中的应用程序具有完全相同的变量名,是否有任何顾虑?

我正在考虑一种意外覆盖的情况。如果“否”,那么有人可以向我解释为什么没有问题吗?

【问题讨论】:

  • 这些变量是否在任何时候都满足,比如一个包含或需要,另一个?
  • 我不在两个文件夹之间传递变量。本质上发生的事情是用户输入了相同的数据,但每个应用程序的前端设计都不同。它在后端连接的系统也不同。出于所有目的,它们都是具有相同代码的单独应用程序。我正在计划重新编写,以使其更加精简和易于维护。展望未来,我想做类似的事情:值 1 -> App1 -> 统一引擎 -> 后端系统 1 值 1 -> App2 -> 统一引擎 -> 后端系统 2 统一引擎能够跟踪和分离请求
  • 除非您的指示是那样,否则它绝不会在您的系统中发生冲突、冲突或崩溃......
  • 谢谢费尔南多!这是再保证!你能不能多解释一下 PHP 或 Web 服务器是如何隔离这些的?我认为这可能与每个页面请求都有自己的“线程/进程”有关?

标签: php variables duplicates overwrite


【解决方案1】:

不,只要两个应用程序目录真正分开并且不包含彼此的文件,应用程序全局变量之间就不会有任何冲突。当 PHP 脚本运行时,发起它的 HTTP 请求可以被认为是一个孤立的事件。它与对同一应用程序(甚至并发)的所有其他请求以及与其他应用程序的所有其他请求分离和隔离。

每个脚本在执行开始时都有自己的变量命名空间,当脚本完成时该环境被终止并从内存中删除。

现在,如果您碰巧使用$_SESSION,并且两个应用程序都使用相同的session_name() 值并在相同的域名上运行,那么$_SESSION 中的值可能会在您的应用程序实例之间发生冲突.这可以通过更改其中一个应用程序的默认值PHPSESSID 来解决:

// Application 1
session_name("APP1");
session_start();

// Application 2
session_name("APP2");
session_start();

您可能已经意识到这一点,但我会说它是完整的。只要有可能,建议抽象出可以在两个应用程序实例之间共享并被它们都包含的代码方面。这与DRY principle 一致,如果您必须修改两个应用程序共享的代码,这将为您省去很多麻烦。

【讨论】:

  • 谢谢迈克尔!这正是我想确认或不确认的!我正在计划重写,只是还没有/还没有时间!
【解决方案2】:

在我看来,您可能会或可能不会在不同文件夹中使用齿状变量名称。这取决于您的应用程序的功能。您需要对 google 的“php 中全局和局部变量的范围”进行一些研究。

简而言之,是的,您可以将应用复制到新文件夹中,您只需要更新/重置路径(例如包含文件路径)和数据库连接结构(如果您的应用使用数据库存储数据)。

【讨论】: