我有以下代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
$db 是否可用于 processBatch 函数,以便我可以使用 db 功能,还是必须在 processBatch() 中再次定义它?
不,不会的。您将无法访问函数$db内部processBatch(),因为它超出了函数的范围——这意味着 PHP 只能看到函数内部定义的变量。您可以使用global关键字(就像您当前对beginProcess()函数所做的那样)让 PHP 知道该变量超出了函数的作用域,并指示它将变量导入到函数作用域中。
在代码中使用global变量通常被认为是不好的做法,我认为更好的做法是将$db作为函数参数传递到函数中:
function processBatch($db, $batch){
// $db is now available inside the function
// more code ...
}
Run Code Online (Sandbox Code Playgroud)
这样,您的代码将更干净且更易于维护。有关变量范围的更多信息,请参阅PHP 手册。
| 归档时间: |
|
| 查看次数: |
7075 次 |
| 最近记录: |