首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP - Defer?

PHP - Defer?
EN

Stack Overflow用户
提问于 2010-11-02 01:42:31
回答 2查看 312关注 0票数 0

我有一个加载类或文件的函数。它的工作原理是这样的。

代码语言:javascript
运行
复制
function load ( $type, $path, $file ) {
  ...
  switch($type) {
    case 'file':
      ....
      include $path . '/' . $file;
    break;
  }
}

它在课堂上工作得很好。它还可以很好地处理包含函数/ html的文件。然而,如果我得到一个包含变量的文件,我就会遇到作用域问题。有没有一种简单的方法将变量从load函数传递到调用它的函数中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-02 01:44:42

有没有一种简单的方法可以把变量从load函数传递到调用它的函数中?

不是的。load()有自己的变量作用域,包含的文件继承了该作用域。

您必须将所有相关变量作为参数传递给load()函数,或者,如果可能,使用$GLOBALS访问变量(yuck!)

一种解决方法是从load()返回文件路径,而不是将其包括在内:

代码语言:javascript
运行
复制
return $path . '/' . $file;

它是这样命名的:

代码语言:javascript
运行
复制
$path = load(".....");
if ($path) include $path;

这将包括原始作用域中的文件。

票数 1
EN

Stack Overflow用户

发布于 2010-11-02 22:29:11

解决这个问题的最简单方法是确保我的配置文件包含对象而不是变量。这消除了作用域问题,因为变量可以静态调用。

代码语言:javascript
运行
复制
$user = database::user;

这个解决方案还使得在应用程序运行时动态更改配置设置变得容易得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4071528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档