1

我的 PHP 功能是

function functionName()
{
include($_SERVER['DOCUMENT_ROOT']."/path/file.php");
}

File.php 的内容是

$foo = 'bar';

调用函数(文件test.php的内容)

函数名();

当调用函数和变量不起作用时

echo $foo;  <- not works

但是在其作品下方添加代码时(文件test.php的内容)

include($_SERVER['DOCUMENT_ROOT']."/path/file.php");
echo $foo; <- its works
4

3 回答 3

4

函数中处理的所有变量都仅限于该函数。您可以在函数中创建无数变量,但这些变量在函数之外对您不可用,除了返回变量。

function thisIsMyFunction () {
  $var1 = "foo";
  $var2 = "bar";
  return $var1;
}

echo thisisMyFunction();

将为您提供“foo”,您可以将其放入变量或回显。如果您正在寻找一种加载多个变量的方法,例如配置文件,您可以执行以下操作:

config.php
$config["var1"] = "foo";
$config["var2"] = "bar";

index.php
include "config.php";

function myFunction(){
  global $config;
  echo $config["var1"] . " " . $config["var2"];
}

myFunction();

will result in

foo bar

简而言之,除非未定义该函数的某些输出,否则函数中所做的某些事情将保留在函数中。这就是为什么包含函数不起作用的原因。

于 2012-06-24T15:32:15.690 回答
2

那是因为如果你不包括其他文件,其中$foo定义,它不能只是为它弥补值。

但是在添加include("/path/file.php");它的作品时。

当然可以。现在,一件重要的事情:您是否包括基于域名?

示例:http ://www.site.com/path/to/file.php 将在当前设置中包含来自http://www.site.com/path/file.php的内容。以下是包含工作的方式:

  1. /file.php>> 文件位于域的根目录中。必须在域的根目录中。
  2. ./file.php>> 文件位于同一目录中。
  3. ../file.php>> 文件位于父目录中。
  4. ../../file.php>> 文件位于祖父母目录中。

(等等)。

include()及其相关功能的作用是require()包含另一个文件,就好像它是包含它们的文件的一部分一样。以下是不同之处:

Include 和 require 是相同的,除非失败:

  • require 会产生一个致命错误(E_COMPILE_ERROR)并且脚本会杀死自己
  • include 只会产生警告(E_WARNING),脚本将完成其余命令
于 2012-06-24T14:00:07.827 回答
0
function functionName()
{
global $foo;
global $bar;

include($_SERVER['DOCUMENT_ROOT']."/path/file.php");
}
functionName();
echo $foo;
echo $bar;
于 2012-07-01T09:24:27.677 回答