0

好的,所以我有三个文件.. 用于示例目的:config.php、functions.php 和 index.php

在 config.php 中,我拥有站点运行所需的所有变量、设置、数据库详细信息等。在 functions.php 中,我尝试使用的函数如下:

function db_connect() {
    mysql_connect($app_config['mysql_server'], $app_config['mysql_username'], $app_config['mysql_password']) or db_die(__FILE__, __LINE__, mysql_error());
    mysql_select_db($app_config['mysql_database']) or db_die(__FILE__, __LINE__, mysql_error());

}

这应该引用的是 config.php 中设置的变量,例如:

$app_config['mysql_username'] = "root";
$app_config['mysql_password'] = "password";

index.php 中需要 config.php 和 functions.php ,它使用该函数,但在 PHP 错误日志中我得到以下内容(对于不同的实例不止一次):

[Mon May 28 02:02:46 2012] [error] [client <removed>] PHP Notice:  Undefined variable: app_config in /usr/home/<removed>/functions.php on line 11

我什至尝试在functions.php中包含config.php,但无济于事。关于为什么这不起作用的任何想法?我敢肯定它相对简单,但我无法理解它..

4

2 回答 2

0

两种选择:通过合同或全局变量

function db_connect() {
    global $app_config;
    mysql_connect($app_config['mysql_server'], $app_config['mysql_username'], $app_config['mysql_password']) or db_die(__FILE__, __LINE__, mysql_error());
    mysql_select_db($app_config['mysql_database']) or db_die(__FILE__, __LINE__, mysql_error());
}

// contract
function db_connect(array $app_config) {        
    mysql_connect($app_config['mysql_server'], $app_config['mysql_username'], $app_config['mysql_password']) or db_die(__FILE__, __LINE__, mysql_error());
    mysql_select_db($app_config['mysql_database']) or db_die(__FILE__, __LINE__, mysql_error());
}

虽然你可以做一些更“优雅”的事情并创建一个

于 2012-05-28T01:10:35.660 回答
0

global $app_config,你想把它放在函数中,然后再使用该变量中的任何东西

这基本上是说从全局命名空间中检索 $app_config 变量以在此函数中使用。PHP 全局变量,虽然对所有函数都可用,但在您明确要求它之前不会涉及该函数的命名空间。这就是你正在发生的事情,你在“要求”之前使用了变量。

于 2012-05-28T01:10:41.307 回答