Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 类属性中的串联_Php_Class_Properties - Fatal编程技术网

Php 类属性中的串联

Php 类属性中的串联,php,class,properties,Php,Class,Properties,可能重复: 如果在类变量中连接字符串,则上述代码无效。 如何解决这个问题。PHP在编译时不做这样的操作;即使所有运算符本身都是常量,也不能将计算值指定给常量 “类成员变量称为“属性”。您也可以看到它们使用其他术语(如“属性”或“字段”)来引用,但出于此引用的目的,我们将使用“属性”“。它们是通过使用关键字public、protected或private中的一个来定义的,后跟一个普通变量声明此声明可能包括一个初始化,但此初始化必须是一个常量值——也就是说,它必须能够在编译时进行计算,并且不能依赖

可能重复:

如果在类变量中连接字符串,则上述代码无效。
如何解决这个问题。

PHP在编译时不做这样的操作;即使所有运算符本身都是常量,也不能将计算值指定给常量

“类成员变量称为“属性”。您也可以看到它们使用其他术语(如“属性”或“字段”)来引用,但出于此引用的目的,我们将使用“属性”“。它们是通过使用关键字public、protected或private中的一个来定义的,后跟一个普通变量声明此声明可能包括一个初始化,但此初始化必须是一个常量值——也就是说,它必须能够在编译时进行计算,并且不能依赖运行时信息进行计算。” ---



您可以做的是将初始化移到构造函数中。

PHP在编译时不执行此类操作;您无法将计算值分配给constants,即使所有运算符本身都是常量

类成员变量称为“属性”。您也可能会看到它们使用其他术语,如“属性”或“字段”,但在本参考中,我们将使用“属性”。它们是通过使用关键字public、protected或private中的一个来定义的,后跟一个普通变量声明此声明可能包括一个初始化,但此初始化必须是一个常量值——也就是说,它必须能够在编译时进行计算,并且不能依赖运行时信息进行计算。” ---



您可以做的是将初始化移到构造函数中。

将初始化移到构造函数中:

class Db extends PDO { 
    protected $dsn;

    public function __construct() {
        $this->dsn = "mysql:host=".HOST.";dbname=".DB; 
        parent::__construct($this->dsn);
    }
} 

当然,您需要实际使用父构造函数所需的正确参数调用它。

在构造函数中移动初始化:

class Db extends PDO { 
    protected $dsn;

    public function __construct() {
        $this->dsn = "mysql:host=".HOST.";dbname=".DB; 
        parent::__construct($this->dsn);
    }
} 

当然,您将需要使用所需的正确参数实际调用父构造函数。

重写派生DB类构造函数以使用DSN初始化PDO:

class DB extends PDO {

  public function __construct() {

    // Optional, but cool way to initialize client encoding
    $options = array(self::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES "utf8"');

    parent::__construct('mysql:host='.HOST.';dbname='.DB, $options);
  }

}

// Usage
$db = new DB();

重写派生DB类构造函数以使用DSN初始化PDO:

class DB extends PDO {

  public function __construct() {

    // Optional, but cool way to initialize client encoding
    $options = array(self::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES "utf8"');

    parent::__construct('mysql:host='.HOST.';dbname='.DB, $options);
  }

}

// Usage
$db = new DB();

声明类的属性并指定初始值时,不能执行任何操作(如连接)。请改为在构造函数中执行。声明类的属性并指定初始值时,不能执行任何操作(如连接)。请改为在构造函数中执行。