在php函数中使用外部包含的文件

在php函数中使用外部包含的文件,php,function,Php,Function,我正在写一个functions.php文件…现在,一些函数必须访问数据库。我有一个db_connect.php文件,其中包含连接脚本。我已将其包含在functions.php中,其中包括: require "sys/db_connect.php"; 但是如何使用内部的连接脚本($con) 等等? 我已经尝试将$con变量设置为全局变量,但没有成功。此结构应该可以工作。注意全局声明出现的位置。不过,我通常会将$con变量作为参数传递到函数中,而不是将其用作全局变量 function a($db)

我正在写一个functions.php文件…现在,一些函数必须访问数据库。我有一个db_connect.php文件,其中包含连接脚本。我已将其包含在functions.php中,其中包括:

require "sys/db_connect.php";
但是如何使用内部的连接脚本($con)

等等?
我已经尝试将$con变量设置为全局变量,但没有成功。

此结构应该可以工作。注意
全局
声明出现的位置。不过,我通常会将$con变量作为参数传递到函数中,而不是将其用作
全局变量

function a($db) {
   //do something with $db
}
function c($db) {
   //do something with $db
}

$result = a($conn);
$something = c($conn);
dbconnect.php

<?
$con = mysqli_connect("blah","blah","blah","blah");
?>
我这样做:

// sys/db_connect.php
<?php
function db(){
  return new mysqli('host', 'username', 'password', 'database');
}
?>

// functions.php
<?php
require 'sys/db_connect.php';
/* you can even close the connection and reopen it this way
   $db = db(); $db->close(); $database = db(); */
function a() {
  $db = db();
}
function c() {
  $db = db();
}
?>
//sys/db\u connect.php
//functions.php

如果您在db_connect.php中的任何函数之外分配了变量$con,如下所示:

//----------
//sys/db_connect.php
//----------
$con = 'my connection script'; //You don't need to put global here
//----------
//other_file.php
//----------
require 'sys/db_connect.php';

function a(){
 global $con;   //global allows $con from above to be used in this function a()

 print_r($con); //This line just for testing purposes!
}

function b(){
 global $con;   //global allows $con to be used in this function b()

 print_r($con); //This line just for testing purposes!
}
然后,您可以在另一个php文件中的函数a()和c()中使用$con,如下所示:

//----------
//sys/db_connect.php
//----------
$con = 'my connection script'; //You don't need to put global here
//----------
//other_file.php
//----------
require 'sys/db_connect.php';

function a(){
 global $con;   //global allows $con from above to be used in this function a()

 print_r($con); //This line just for testing purposes!
}

function b(){
 global $con;   //global allows $con to be used in this function b()

 print_r($con); //This line just for testing purposes!
}

有三种方法可以做到这一点,要么使用
$GLOBALS
访问值,要么将其声明为全局变量,要么将其作为参数传递

第一路:

include 'db_connect.php';
    function a() {
        $link = $GLOBALS['con'];
        // you can assign $GLOBALS['con'] or use it as a normal variable
    }
include 'db_connect.php';
function a() {
    global $con;
    // then use it as a normal variable
 }
function a($con) {
    // use the variable
}
第二种方式:

include 'db_connect.php';
    function a() {
        $link = $GLOBALS['con'];
        // you can assign $GLOBALS['con'] or use it as a normal variable
    }
include 'db_connect.php';
function a() {
    global $con;
    // then use it as a normal variable
 }
function a($con) {
    // use the variable
}
第三种方式:

include 'db_connect.php';
    function a() {
        $link = $GLOBALS['con'];
        // you can assign $GLOBALS['con'] or use it as a normal variable
    }
include 'db_connect.php';
function a() {
    global $con;
    // then use it as a normal variable
 }
function a($con) {
    // use the variable
}

阅读有关变量作用域的更多信息

如果在
sys/db_connect.php
文件中设置了
$con
,则您应该可以访问它(假设您实际上将该文件包括在脚本中)。如果它不是全局文件,则无法在函数的作用域中访问它@它还需要在include脚本的全局范围内声明(它不是隐式声明的)。