【问题标题】:Is this syntax is wrong?这个语法是错误的吗?
【发布时间】:2011-09-09 03:37:29
【问题描述】:

我在我的 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();

【问题讨论】:

    标签: php


    【解决方案1】:

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

    class Foo {
        const Bar = 'value';
    }
    

    【讨论】:

      【解决方案2】:

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

      要么在外面定义,要么定义为class constants.

      【讨论】:

        【解决方案3】:

        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:: 引用(如静态成员)。

        【讨论】:

        • 我原本打算在下次我得到一个无法解释的反对票时留下一个笑话评论,但即使我认为这不再有趣了。我想我会把它保存为元或其他东西。 -耸肩-
        • (这不是开玩笑的评论,顺便说一句)
        • @BoltClock ,这是制作这样的 db 文件的最佳做法吗?有什么安全的方法吗?
        • @user439555:关于最佳实践我不能说太多。我认为您的数据库类看起来不错。
        • @BoltClock,并且这个const只定义了4个这个文件,所以只需要定义const 4个这个文件。任何其他方式代替const
        【解决方案4】:

        您不能将define 放在适当的类声明中。把它们放出来

        //define('DB_HOST','localhost');
        define("DB_USER","root");
        define("DB_PASSWORD","");
        define("DB_DB","exotic_live");
        define("DB_HOST", "localhost");
        
        
        class Database{
        [...]
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-09
          • 1970-01-01
          • 2013-07-23
          • 2022-01-02
          • 1970-01-01
          • 1970-01-01
          • 2021-09-09
          • 2012-09-18
          相关资源
          最近更新 更多