【问题标题】:Trouble with variable scope in PHPPHP中变量范围的问题
【发布时间】:2011-11-01 04:02:21
【问题描述】:

这是我的情况:

我正在开发一个 PHP 项目,该项目使用我编写的一些函数来处理外部 xml 文档。我想要做的是将相同的functions.php 文件导入到许多不同的页面中,这些页面都使用相同的代码。问题是 xml 文件的路径并不总是相同的,并且通常取决于当前显示的视图。

在我看来,我要做的基本上是在include 'path-to-functions.php'; 之前声明一个$source = 'path-relative-to-view';,然后让函数在必要时访问$source 变量。这样,我就不必为我所在的每个不同目录重写函数了。

我认为这是可能的,但不幸的是,我没有使用足够的 PHP 来确定。

【问题讨论】:

  • 对不起,如果我误解了。你的意思是你的函数足够通用,但你有一个硬编码的 $source?

标签: php model-view-controller scope


【解决方案1】:

您可以使用全局变量 - 但不要,全局变量不好。

只需重写函数以将文件路径作为参数之一。

您可以做的另一件事是将它们分组到一个类中。然后使用类的成员变量来存储他们都可以访问的路径。

【讨论】:

  • 这正是我将采取的路径:首先,编写方法签名以包含参数,然后,如果需要,将其分类。不传递方法 sig 重写并直接将其分类是很好的,因为它消除了重复传递源作为参数的需要。它只是创建、设置和开始触发函数。
  • 能问一下为什么全局变量这么差吗?
  • 它们本身并不是“坏”的。更多的是弊大于利——通常相差很大。
【解决方案2】:

您必须在每个将使用它的函数中声明 $source 全局。

function abc
{
    global $source;
    //--use $source
}

【讨论】:

  • 即使不推荐,它绝对是我应该知道如何使用的东西。我很难理解如何使用它的文档,但我想我只需要你的一句话!谢谢!
猜你喜欢
  • 2016-08-30
  • 2011-04-10
  • 2011-08-11
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 2010-11-08
  • 1970-01-01
相关资源
最近更新 更多