我有一个名为ChangeApprovalInfo.php的页面 - 它有一个名为Row_Rendered的函数,如下所示;
function Row_Rendered() {
// To view properties of field class, use:
//var_dump($this-><FieldName>);
$RecordOwner = $this->RequestUser->CurrentValue;
echo $RecordOwner;
}
回应$ RecordOwner获取我在另一页上进行SQL查询所需的数据....
我有另一个名为ChangeApprovalEdit.php的页面 - 此页面有
<?php include_once "ChangeApprovalinfo.php" ?>
位于文件顶部。
ChangeApprovalEdit.php有一个函数,我需要在ChangedApprovalInfo.php中定义的$ RecordOwner变量
如果我添加&#34; echo $ RecordOwner&#34;在ChangeApprovalEdit.php页面上,我收到一条错误消息,说它是一个未知变量。我的理解是,我需要让它成为全球性的&#34;或某些此类业务。我对PHP知之甚少,而且我编辑的页面冗长而复杂。 (对我来说,至少)
文件的pastebin
ChangeApprovalInfo.php = http://pastebin.com/bSRM1wwN
ChangeApprovalEdit.php = http://pastebin.com/AStG9pqb
编辑: 将Row_Rendered更改为此似乎更有效。我很难看到以后我可以回应这个变量......但我已经到了这个地方......
function Row_Rendered() {
// To view properties of field class, use:
//var_dump($this-><FieldName>);
$GLOBALS['RecordOwner'] = $this->RequestUser->CurrentValue;
}
答案 0 :(得分:2)
不要从函数中echo
个变量,它只是将它们输出到标准输出。来自函数的return
,因此您也可以在其他地方使用该值。
function Row_Rendered() {
$RecordOwner = $this->RequestUser->CurrentValue;
return $RecordOwner;
}
然后代替
$obj->Row_Rendered();
使用
echo $obj->Row_Rendered();
如果您想在其他地方使用该值,请使用
$value = $obj->Row_Rendered();
答案 1 :(得分:2)
你可以做几件事:
首先,您可以从函数返回$RecordOwner
,并将其值存储在变量中。这种方法通常是首选。
function Row_Rendered() {
// To view properties of field class, use:
//var_dump($this-><FieldName>);
$RecordOwner = $this->RequestUser->CurrentValue;
echo $RecordOwner;
return $RecordOwner;
}
// Store it in a variable when calling the function.
$RecordOwner = Row_Rendered();
或者,您可以在函数内部使其全局:
function Row_Rendered() {
// To view properties of field class, use:
//var_dump($this-><FieldName>);
$GLOBALS['RecordOwner'] = $this->RequestUser->CurrentValue;
echo $GLOBALS['RecordOwner'];
}
答案 2 :(得分:0)
您可以使用$GLOBALS
superglobals数组,如下所示:
function Row_Rendered() {
$GLOBALS['RecordOwner'] = $this->RequestUser->CurrentValue;
}
但是,你不应该这样做。相反,重构您的应用程序,以便ChangeApprovalinfo.php
中的视图只包含一个函数,然后使用适当的参数调用该函数。
答案 3 :(得分:0)
编辑:Chaning Row_Rendered这似乎更有效。我很难看到以后我可以回应这个变量......但是我已经到了这个地方......
function Row_Rendered() { // To view properties of field class, use: //var_dump($this-><FieldName>); $GLOBALS['RecordOwner'] = $this->RequestUser->CurrentValue; }
我觉得有必要为此更新写下另一个答案。让我演示从外部看到的全局变量的使用函数:
$obj->Row_Rendered();
$obj->foobar();
echo $GLOBALS['RecordOwner'];
快,echo
将会是什么?这个价值来自哪里?嗯,这取决于$obj-foobar()
的作用。也许它改变了全局变量。也许它没有。谁知道变量是否已设置?如果不在每次调用函数后添加调试行,您将如何追溯发生的事情?
这只是三行代码。想象一下,在任何复杂的应用程序中。
现在,如果return
来自Row_Rendered
:
$owner = $obj->Row_Rendered();
$obj->foobar();
echo $owner;
如果Row_Rendered
方法的行为正常(返回所有者),则此代码非常容易预测。如果你不遵循这种模式,那么当应用程序增长到任何一半复杂的大小时,你将有时间做任何事情。
答案 4 :(得分:0)
从函数内部将变量设置为全局变量
$my_global_var = "old value";
function doing_stuff(){
global $my_global_var; //this will use the global variable instead of creating a local one
$my_global_var = "new value";
}
echo $my_global_var;//returns "new value"