php - 如何访问函数内的变量?

标签 php

我正在编写一个 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/

相关文章:

php - Codeigniter session 不起作用

php - Chef PHP Recipe RecipeNotFound : could not find recipe client for cookbook mysql

php - WAMP 服务器为绿色,但仅获得 404

php - CakePHP的 "saveAll"需要3分钟以上才能保存?

php - 使用 PHP 过滤和排序 XML

php - 如何将 foreach 循环或 for 循环分成 10 条记录

php - 如何在 PHP 中使用正则表达式将文本拆分为 Unicode 单词

php - 选择在日期范围内登录的 MySql 行,返回每天的小时数

php - 在页面上显示新记录数

php - 在 ubuntu 上安装 phpmyadmin 后,用户 'root' @'localhost' 的访问被拒绝