3

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

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

4

1 回答 1

1

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

这一行:

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

归结为

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

这是一个完全可以接受的结构。它只是动态地创建一个对象属性。

于 2013-10-01T21:53:08.840 回答