PHP全局$db调用函数
我有以下代码:PHP全局$db调用函数,php,Php,我有以下代码: function beginProcess(){ global $db; $sql = "SELECT last_batch from ".TABLE_STATUS.";"; $lastBatch = $db->Execute($sql); $lastBatch=(int)$lastBatch->fields['last_batch']; echo "<BR/>Last Batch = ".
function beginProcess(){
global $db;
$sql = "SELECT last_batch from ".TABLE_STATUS.";";
$lastBatch = $db->Execute($sql);
$lastBatch=(int)$lastBatch->fields['last_batch'];
echo "<BR/>Last Batch = ".$lastBatch;
if ($lastBatch >=1 && $lastBatch <=3 ){
$batch = $lastBatch +1;
}else{
$batch = 1;
}
processBatch($batch);
}
processBatch函数是否可以使用$db以便我可以使用db功能,还是必须在processBatch中重新定义它?您需要在使用它的每个函数中重新定义它: 如果你不想那样,你可以用
$GLOBALS['db']
而不是
global $db;
$db
相同。您需要在每个使用它的函数中重新定义它: 如果你不想那样,你可以用
$GLOBALS['db']
而不是
global $db;
$db
相同。是的,您必须在progressBatch函数中使用全局关键字,例如
阅读
或者,您必须在processBatch函数中传递$db,如
把它叫做
processBatch($batch,$db);
是的,您必须在progressBatch函数中使用全局关键字,例如
阅读
或者,您必须在processBatch函数中传递$db,如
把它叫做
processBatch($batch,$db);
不,不会的。您将无法在processBatch函数内访问$db,因为它不在函数的作用域内-这意味着PHP只能看到函数内定义的变量。您可以在当前处理beginProcess函数时使用global关键字,让PHP知道变量在函数的作用域之外,并指示它将变量导入函数的作用域 在代码中使用全局变量通常被认为是不好的做法,我认为更好的做法是将$db作为函数参数传递到函数中:
function processBatch($db, $batch){
// $db is now available inside the function
// more code ...
}
这样,您的代码将更干净,更易于维护。有关变量作用域的更多信息,请参阅。否,它将不会。您将无法在processBatch函数内访问$db,因为它不在函数的作用域内-这意味着PHP只能看到函数内定义的变量。您可以在当前处理beginProcess函数时使用global关键字,让PHP知道变量在函数的作用域之外,并指示它将变量导入函数的作用域 在代码中使用全局变量通常被认为是不好的做法,我认为更好的做法是将$db作为函数参数传递到函数中:
function processBatch($db, $batch){
// $db is now available inside the function
// more code ...
}
这样,您的代码将更干净,更易于维护。有关变量范围的更多信息,请参阅。我讨厌没有解释的否决票。真胆小!我反驳了反对票,因为我看不出你的回答有什么理由会得到它。其他答案表达得更清楚,但你的答案事实上也是正确的。我讨厌没有解释的否决票。真胆小!我反驳了反对票,因为我看不出你的回答有什么理由会得到它。其他答案表达得更清楚,但你的答案事实上也是正确的。