我正在尝试学习php的codeigniter,我遇到了这个代码块,看起来教师试图改变一个常量变量。首先,我对使用花括号的原因一无所知,然后我很好奇这个常量变量到底发生了什么。
<?php
class MY_Model extends CI_Model {
const DB_TABLE = 'abstract';
const DB_TABLE_PK = 'abstract';
private function insert() {
$this->db->insert($this::DB_TABLE, $this);
$this->{$this::DB_TABLE_PK} = $this->db->insert_id();
}
}
?>
有人可以在这里解释不仅使用花括号,还可以解释如何为定义的常量分配新值?
答案 0 :(得分:1)
他们没有分配常数。他们使用常量作为查找键,以创建对象的“动态”属性。
这一行:
$this->{$this::DB_TABLE_PK} = $this->db->insert_id();
归结为
$this->{'abstract'} = $this->db->insert_id();
这是一个完全可以接受的结构。它只是在运行中创建一个对象属性。