与以下代码有点混淆

时间:2013-10-01 21:44:30

标签: php codeigniter constants

我正在尝试学习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();
        }
    }
?>

有人可以在这里解释不仅使用花括号,还可以解释如何为定义的常量分配新值?

1 个答案:

答案 0 :(得分:1)

他们没有分配常数。他们使用常量作为查找键,以创建对象的“动态”属性。

这一行:

$this->{$this::DB_TABLE_PK} = $this->db->insert_id();

归结为

$this->{'abstract'} = $this->db->insert_id();

这是一个完全可以接受的结构。它只是在运行中创建一个对象属性。