【发布时间】:2011-03-31 11:14:04
【问题描述】:
我一直在尝试 OO PHP,目前有三个文件。我有一个 class_lib.php,目前只有一个 databaseServer 类、一个 index.php 文件和一个 definitions.php 文件。我想将所有敏感的数据库信息放入定义文件中。但是,当我这样做时,尝试连接到数据库时出现错误:“未知服务器 DB_HOST”。我的定义文件是:
<?php
define("DB_HOST","localhost");
define("DB_USER","root");
define("DB_PASS","password");
define("DB_NAME","database");
?>
然后我像这样在索引文件中使用它们:
include('definitions.php');
include('class_lib.php');
$testing = new databaseServer();
$testing->connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);
而我在databaseServer类中使用的函数是这样的:
function connect($host,$user,$pw,$db) {
$this->con = mysql_connect($host,$user,$pw);
if (!$this->con) {
die('Could not connect: ' . mysql_error());
}
$this->selectDb($db);
}
function selectDb($database) {
$this->db = mysql_select_db($database,$this->con);
if (!$this->db) {
echo "Could not Select database: " . mysql_error();
}
}
任何想法为什么这不起作用?我也尝试将定义文件放入 class_lib 文件的包含中,但它仍然不起作用。
【问题讨论】:
-
首先,不要使用 require / include 作为函数,因为它不是。在索引文件中定义这些常量时会发生什么?
-
这应该可以正常工作,而且我从未见过它不工作。您是否 100% 确定包含的顺序正确?能否对“definitions.php”文件和索引文件中的常量值进行测试输出?
-
@Kemo 使用带有大括号的
include有什么问题? -
@Pekka 它是一种语言结构,而不是函数,因此最好不要使用大括号。
-
@Kemo 但为什么呢?只要它在项目中是一致的,我并没有真正看到使用或不使用大括号之间的区别。有吗?毕竟
include可以有返回值。