2011-06-06 2 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() глобальные константы и 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

Изначально я планировал оставить шутку комментарий в следующий раз, когда я получил необъяснимые но даже я не думаю, что это было бы смешно. Думаю, я сохраню его для мета или что-то еще. * -shrug- * – BoltClock

+0

(Это не шуточный комментарий, кстати) – BoltClock

+0

@BoltClock, это лучшая практика, чтобы сделать db-файл вроде этого?. Безопасный способ? – user439555

2

Вы не можете 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'; 
} 
Смежные вопросы