PHP 在向脚本添加函数时不包含文件


PHP does Not include files when adding function to Script

我的PHP脚本中遇到了一个非常奇怪的错误。当我在脚本中包含外部文件并访问包含文件中的某些变量时,一开始一切都很好。当我将代码包装在一个函数中并尝试从另一个 PHP 脚本调用该函数时,我收到一个错误,指出某些变量未声明(这些变量来自包含的文件)。所以基本上当我将我的代码包装在一个函数中时,脚本找不到外部变量,当我不将代码包装在一个函数中时,一切都可以正常工作......什么可能导致此问题?

编辑:

这是我定义变量的代码:

<?php

/* Database config */
$db_host        = 'xxx';
$db_user        = 'xxx';
$db_pass        = 'xxx';
$db_database        = 'xxxr';
/* End config */


$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_database);
// If you are connecting via TCP/IP rather than a UNIX socket remember to add the port number as     a parameter.
?>

我想访问$mysqli

这是另一个代码:

<?php
  include "connect.php";
  include "push.php";
  function findActions($actionID,$userName)
  {
   $actionID = "X0aUsz7QOC1GCJG9ZnY0UoRWoj35hKFt0LxpwtB8";
   $userName = "janne";
$currentDate = date('d/m/Y H:i');
$query = "SELECT * FROM ".$userName."actions WHERE actionID = ?";

  if($stmt = $mysqli->prepare($query))
   {
$stmt->bind_param('s', $actionID);
    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l);
while ($stmt->fetch())
{
    $result[] = array($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l);

    $startDate = strtotime($j);
    $endDate = strtotime($i);
    $now = time();
    if ($now>= $startDate && $now<= $endDate)
    {
        $message = $e.":'n".$a;
        $body['aps'] =
        array(
                'alert' => $message,
                'sound' => 'default'
            );
        $payload = json_encode($body);

        pushMessage($payload);

    }
   }
   }
     else
    {
    echo "Error";
  }
  }


 ?>

我尝试使用全局,但它没有帮助:(

您目睹了变量范围的问题。默认情况下,函数查找在本地作用域中声明的变量。您可以通过将外部文件中定义的变量声明为 global 来指示函数在全局范围内查找变量:

function foo() {
    global $bar, $baz, $qux;
}

假设$bar$baz$qux是外部文件中赋值的变量,一旦声明为global,它们就可以从函数范围内访问。

如果要将包含的文件包装在函数中,则任何变量都将在函数范围内定义。也就是说,它们将成为局部变量,在全局上下文中不可见。

您对此执行的操作取决于您拥有的代码以及您要实现的目标。