我正在编写一个 php 文件,其中包含我想要执行的任务的函数。其中一些功能需要使用mysql数据库。我创建了一个单独的 db_connections.php 文件,并使用 require_once 将其添加到函数文件中。
我可以访问在此文件中创建的 PDO 对象,但无法在函数内访问此变量。有没有办法访问函数内部的变量?
<?php
require_once ("class.phpmailer.php");
require_once ("error_option.php");
require_once ("db_connection.php"); //The PDO object has been created here
function processLoginUser($email, $password) {
//I cant seem to access the pdo object inside functions, but it is accessible outside functions
$email = trim($email);
$password = trim($password);
$checkUserQuery = $dataObject->prepare("CALL sp_CheckLogin()");
$checkUserQuery->bindParam();
}
最佳答案
调用函数时可以传递连接对象:
processLoginUser($email, $password, $dataObject);
然后,当您将其添加到参数列表时,它将可以在函数范围内访问:
function processLoginUser($email, $password, $dataObject) {
$email = trim($email);
$password = trim($password);
$checkUserQuery = $dataObject->prepare("CALL sp_CheckLogin()");
$checkUserQuery->bindParam()
}
或者您可以使用闭包(>= PHP 5.3),假设在定义 $dataObject
之后调用闭包:
$processLoginUser = function($email, $password) use ($dataObject) {
$email = trim($email);
$password = trim($password);
$checkUserQuery = $dataObject->prepare("CALL sp_CheckLogin()");
$checkUserQuery->bindParam()
};
$processLoginUser($email, $password); // call the closure as you would a regular function.
或者,您也可以将 $dataObject
变量设为全局
:
function processLoginUser($email, $password) {
global $dataObject;
$email = trim($email);
$password = trim($password);
$checkUserQuery = $dataObject->prepare("CALL sp_CheckLogin()");
$checkUserQuery->bindParam()
}
这纯粹是基于意见的,但对于您的情况,我会坚持第一个选项:只需将其作为参数传递给函数。
关于php - 如何访问函数内的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36753351/