我无法弄清楚如何正确地说出这一点,但希望这段代码足够了:
// a.php
function func_req($f) {
// I know there are issues with paths, ignore.
require_once $f;
}
// b.php
$myvar = "my variable!!!";
function myfunc() {
// get myvar somehow
return $myvar;
}
// client_code.php
require_once 'a.php';
func_req('b.php');
isset($myvar); // should return FALSE
myfunc(); // should return "my variable!!!"
有没有办法修改代码的任何部分以获得所需的结果?
将client_code.php修改为以下内容:
1 <?php
2 require_once 'a.php';
3 func_req('b.php');
4 echo isset($myvar) ? 'TRUE' : 'FALSE'; // should return FALSE
5 echo myfunc() ?: 'undefined'; // should return "my variable!!!"
并将全局声明添加到myfunc()
,php client_code.php
打印:
FALSEundefined
答案 0 :(得分:1)
$myvar = "my variable!!!";
function myfunc() {
global $myvar;
// get myvar somehow
return $myvar;
}
$ myvar不在myfunc()方法的范围内,你可以将它设为全局(这是令人讨厌的),或将其作为函数参数传递。
答案 1 :(得分:0)
要在函数中使变量可用,您可以执行以下操作:
$myvar = "my variable!!!";
function myfunc() {
global $myvar; //allows the function to use the variable.
//carry out any processing as necessary.
return $myvar;
}
但是应尽可能避免使用全局变量。当然,正确的方法是:
$myvar = "my variable!!!";
function myfunc(myvar) {
//carry out any processing as necessary.
return $myvar;
}
全局性不赞同的原因是由于很容易失去对变量进行更改的内容。这反过来又难以维护代码。
答案 2 :(得分:0)
AFAIK PHP中没有文件范围。
你可以使用命名空间(在我看来,这是真的,在PHP中真的很难看)或者使用Classes。也许配置对象符合您的需求?
答案 3 :(得分:0)
您不能将变量专用于函数。你可以使用一个类:
<?php
class Test {
static private $myvar = "my variable";
static public function myfunc() {
return self::$myvar;
}
}
var_dump(isset(Test::$myvar));
var_dump(Test::myfunc());
?>