这是关于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();
?>
答案 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
...当然还有声明全局变量