这种语法是错的吗?

时间:2011-06-06 09:29:02

标签: php

我在db.php中定义了这个

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

抛出错误

  

解析错误:语法错误,意外的T_STRING,在第5行的C:\ xampp \ htdocs \ test \ config \ db.php中期待T_FUNCTION

完整代码

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 个答案:

答案 0 :(得分:4)

使用define()生成的常量是全局常量,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::(与静态成员一样)在课堂外引用。

答案 1 :(得分:2)

您不能将define放在礼仪类声明中。把它们拿出来

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


class Database{
[...]
}

答案 2 :(得分:1)

您无法在类定义中定义常量。

在外部定义它们,或将它们定义为class constants.

答案 3 :(得分:0)

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

class Foo {
    const Bar = 'value';
}