在PHP中获取函数中的声明值

时间:2011-10-18 14:34:30

标签: php

这是关于RAW php编码。我有一个页面 - “config.php”,这里有一些声明。

// config.php中

<?php
$myvalue = "This is a test";
include("functions.php");
?>

//的functions.php

<?php
function testFunction()
{
   $dd = $myvalue;
   echo $dd;
}
?>

当我从“page.php”等其他页面调用“testFunction()”时,我希望它回显“这是一个测试”< / strong>即可。我怎样才能做到这一点? “page.php”包含在“page.php”中。希望这个场景是可以理解的。

// page.php文件

<?php
include('config.php');
testFunction();
?>

6 个答案:

答案 0 :(得分:3)

在函数的第一行,添加:

global $myvalue;

当您在声明变量后包含该php文件时,$myvalue - 变量会转移到functions.php,但您必须告诉您的函数使用此全局变量

你的功能如下:

function testFunction()
{
   global $myvalue;
   $dd = $myvalue;
   echo $dd;
}

答案 1 :(得分:2)

您遇到的是PHP Variable Scope

变量($foo)只能在function()声明之外或之内访问(但除非使用global修饰符,否则不要越过此边界)。但是,constants始终可以看到。

示例:

<?php
  $foo = 'bar';
  define('CONST_FOO', 'bar');

  echo $foo;      // output: bar
  echo CONST_FOO; // output: bar

  function Foo(){
    echo $foo;      // undefined, out of scope
    echo CONST_FOO; // output: bar
  }
  function Bar(){
    global $foo; // now $foo can be seen

    echo $foo;      // output: bar
    echo CONST_FOO; // output: bar
  }

答案 2 :(得分:2)

您应该指定函数使用 函数的参数:

的functions.php

<?php
function testFunction($value)
{
   echo $value;
}
?>

然后在 page.php

<?php
include('config.php');
testFunction($myvalue);
?>

这将使您的代码更加模块化。

请参阅:Is include()/require() with “side effects” a bad practice?

答案 3 :(得分:2)

$myValue是全局的,默认情况下无法在函数范围内看到。你可以明确地让它像这样:

<?php
function testFunction()
{
    global $myValue;
    $dd = $myvalue;
    echo $dd;
} 

或者您可以定义一个常量:

<?php
define ('MY_VALUE', 'This is a test');

// functions.php
function testFunction()
{
    $dd = MY_VALUE;
    echo $dd;
} 

或者你可以使它成为配置类的静态或const成员:

<?php
// config.php
class Config {
    public static $myValue = 'This is a test';
    const myConst = 'This is a test';
}

// functions.php
require_once 'config.php';
function testFunction()
{
    $dd = Config::$myValue;
    echo $dd;

    $dd = Config::myConst;
    echo $dd;
} 

答案 4 :(得分:1)

您需要声明myValue是全局的,或者像这样使用$ _GLOBALS数组:

<?php
function testFunction()
{
   $dd = $_GLOBALS['myvalue'];
   echo $dd;
}
?>

答案 5 :(得分:0)

不是吗? : http://www.php.net/manual/en/function.isset.php

...当然还有声明全局变量