2011-06-06 76 views
0

我在我db.php中这种语法是错误的吗?

define("DB_USER","root"); 
define("DB_PASSWORD",""); 
define("DB_DB","exotic_live"); 
define("DB_HOST", "localhost"); 

定义此抛出一个错误

Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION in C:\xampp\htdocs\test\config\db.php on line 5

完整的代码是

class Database{ 

//define('DB_HOST','localhost'); 
define("DB_USER","root"); 
define("DB_PASSWORD",""); 
define("DB_DB","exotic_live"); 
define("DB_HOST", "localhost"); 

private function db_connect(){ 
$this->dbconnect(); 
} 

    private function dbconnect() { 
    $conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) 
     or die ("<br/>Could not connect to MySQL server"); 

    mysql_select_db(DB_DB,$conn) 
     or die ("<br/>Could not select the indicated database"); 

    return $conn; 
    } 
} 

$obj_db=new Database(); 
$obj_db->db_connect(); 

回答

4

常量是全局常量,而define() s不能在一个类定义出现(除非他们是在它的方法)。

类常量的定义是这样的:

const DB_USER = "root"; 
const DB_PASSWORD = ""; 
const DB_DB = "exotic_live"; 
const DB_HOST = "localhost"; 

而在相同类中引用的这样的:

private function dbconnect() { 
    $conn = mysql_connect(self::DB_HOST, self::DB_USER, self::DB_PASSWORD) 
     or die ("<br/>Could not connect to MySQL server"); 

    mysql_select_db(self::DB_DB,$conn) 
     or die ("<br/>Could not select the indicated database"); 

    return $conn; 
    } 

和类外引用与Database::代替self::(如静态成员)。

+0

本来准备下一次我得到了一个无法解释留下一个笑话评论downvote,但即使我不认为这将是有趣的了。猜猜我会保存它元或什么的。 * -shrug- * – BoltClock 2011-06-06 09:47:09

+0

(这不是笑话评论,顺便说一句) – BoltClock 2011-06-06 09:54:14

+0

@BoltClock,这是使db文件像这样的最佳做法?。任何安全的方式? – user439555 2011-06-06 10:02:36

2

你不能把一个define礼类的声明中。把他们与define()取得

//define('DB_HOST','localhost'); 
define("DB_USER","root"); 
define("DB_PASSWORD",""); 
define("DB_DB","exotic_live"); 
define("DB_HOST", "localhost"); 


class Database{ 
[...] 
} 
1

您不能在类定义中定义常量。

外线定义它们,或者将它们定义为class constants.

0

要在类中定义常量使用以下语法:

class Foo { 
    const Bar = 'value'; 
}