Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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 使函数中的变量可供其他函数访问?_Php_Function_Variables_Scope - Fatal编程技术网

Php 使函数中的变量可供其他函数访问?

Php 使函数中的变量可供其他函数访问?,php,function,variables,scope,Php,Function,Variables,Scope,在一个函数中,我有一个$connection变量,它显然存储了我与mysql的连接, 如何从其他函数内部调用该var,以避免在需要该var的每个函数内部粘贴$connection var 我试过了,但没有用 非常感谢将连接作为参数传递给需要它的函数。它使代码保持干净和可重用。将连接作为参数传递给需要它的函数。它使您的代码保持干净且可重复使用。您可以使用旧的全局关键字 function a() { global $connection; } 或者您可以将它放入$GLOBALS(这将帮助您从

在一个函数中,我有一个$connection变量,它显然存储了我与mysql的连接, 如何从其他函数内部调用该var,以避免在需要该var的每个函数内部粘贴$connection var

我试过了,但没有用


非常感谢

将连接作为参数传递给需要它的函数。它使代码保持干净和可重用。

将连接作为参数传递给需要它的函数。它使您的代码保持干净且可重复使用。

您可以使用旧的
全局
关键字

function a() {
   global $connection;
}
或者您可以将它放入
$GLOBALS
(这将帮助您从中定义的函数中获取它)

他们两个都不太漂亮

或者可以将
$connection
作为参数传入


处理数据库连接最常用的方法是使用单例模式来处理其创建,或者使用一个带有OO的基类,该基类具有一个
$this->db
,您的所有其他类都可以从中继承。

您可以使用旧的
全局
关键字

function a() {
   global $connection;
}
或者您可以将它放入
$GLOBALS
(这将帮助您从中定义的函数中获取它)

他们两个都不太漂亮

或者可以将
$connection
作为参数传入


处理数据库连接最常见的方法是使用单例模式来处理其创建,或者使用一个具有可用的
$this->db
的OO基类,所有其他类都可以继承该基类。

另一种解决方案是使用类并将连接设为类变量。每次需要时,您只需使用
$this->connection
,但如果您已经在许多文件中编写了大量代码,那么这并不是一个真正的解决方案。

另一个解决方案是使用类并将连接设为类变量。每次需要时,您只需使用
$this->connection
,但如果您已经在许多文件中编写了大量代码,那么这并不是一个真正的解决方案。

在函数外部声明变量,然后使用global关键字在您需要的每个函数内部访问它

$globalName = "Zoe";

function sayHello() {
  $localName = "Harry";
  echo "Hello, $localName!";

  global $globalName;
  echo "Hello, $globalName!";
}

sayHello();

在函数外部声明变量,然后使用全局关键字在每个需要的函数内部使其可访问

$globalName = "Zoe";

function sayHello() {
  $localName = "Harry";
  echo "Hello, $localName!";

  global $globalName;
  echo "Hello, $globalName!";
}

sayHello();

+1中窃取,尽管您提到单例模式很有趣,因为它非常类似于全局变量…;)+1尽管您提到单例模式很有趣,因为它非常类似于全局变量…;)