2013-10-01 49 views
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(); 
     } 
    } 
?> 

可有人請,不僅說明這裏使用大括號,還怎麼可能分配一個新的值來定義的常量?

+1

這些答案可能有所幫助:http://stackoverflow.com/a/9056123/1438393,http://stackoverflow.com/questions/1147937/ –

回答

1

他們不分配給常量。他們將常量用作查找鍵來創建對象的「動態」屬性。

這條線:

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

歸結爲

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

其是完全可以接受的構建體。它只是在即時創建一個對象屬性。

+0

啊我應該記得這從我的基本PHP學校教育。謝謝你們:P –