<?php
function foo($one, $two){
bar($one);
}
function bar($one){
echo $one;
//How do I access $two from the parent function scope?
}
?>
如果我有上面的代码,我怎样才能从bar()中获取变量$ 2,而不是作为变量传递它(原因未知)。从另一个函数的作用域访问变量?
感谢,
迈克
<?php
function foo($one, $two){
bar($one);
}
function bar($one){
echo $one;
//How do I access $two from the parent function scope?
}
?>
如果我有上面的代码,我怎样才能从bar()中获取变量$ 2,而不是作为变量传递它(原因未知)。从另一个函数的作用域访问变量?
感谢,
迈克
使类 - 你可以声明$两成的实例字段,这将是对所有人开放的实例方法:
class Blah {
private $two;
public function foo($one, $two){
this->$two = $two;
bar($one);
}
public function bar($one){
echo $one;
// How do I access $two from the parent function scope?
this->$two;
}
}
虽然你的回答并没有完全回答这个问题(我仍然很好奇,除了使用课程之外是否有可能),但它提醒了我,我已经在课堂上了,所以我只是把它变成了课堂成员。非常感谢您的帮助。 – 2009-11-09 04:43:57
粗方法是导出它进入全球范围,例如:
<?php
function foo($one, $two){
global $g_two;
$g_two = $two;
bar($one);
}
function bar($one){
global $g_two;
echo $g_two;
echo $one;
//How do I access $two from the parent function scope?
}
?>
我不认为这是一个好建议,即使它会工作。 – 2009-11-09 05:17:37
我确实使用$ global来acc ess变量在我的整个脚本中。
像这样:
public function exist($id) {
global $db;
$query = "SELECT * FROM web_users_session where user_id='$id'";
return $this->_check = $db->num_req($query);
}
你看过另一个答案吗?你重复它们,也没有使用2个函数的代码 – 2014-10-30 08:27:23
简短的回答:你不知道。 – helloandre 2009-11-09 04:43:51
在特定范围内定义变量的要点是限制访问权限,以便在该范围之外不能访问**。所以不,这是不可能的。如果你想这样做,那么不要在本地范围内定义它 - 使用一个类或全局范围。 – Smashery 2009-11-09 05:46:11