Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP全局$db调用函数_Php - Fatal编程技术网

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 ...
}

这样,您的代码将更干净,更易于维护。有关变量范围的更多信息,请参阅。

我讨厌没有解释的否决票。真胆小!我反驳了反对票,因为我看不出你的回答有什么理由会得到它。其他答案表达得更清楚,但你的答案事实上也是正确的。我讨厌没有解释的否决票。真胆小!我反驳了反对票,因为我看不出你的回答有什么理由会得到它。其他答案表达得更清楚,但你的答案事实上也是正确的。