2017-06-02 69 views
0

我目前面臨以下問題:命名PHP中的關聯數組(Laravel)

隨着laravel我想動態創建和種子我的權限配置。我現在有它硬編碼方式如下(內Config/permissions.php):

<?php 
return [ 
'core' => [ 
     'permissions' => [ 
      [ 
       'name' => 'name', 
       'description' => 'desc', 
      ], 
      [ 
       'name' => 'name', 
       'description' => 'desc', 
      ], 
     ], 

], 
]; 

隨着laravel我能夠使用"dot"符號。訪問我的配置文件是一件輕而易舉的,因爲我可以這樣做:

\Config::get('permissions.core'); 

但是,我想動態地生成上面的代碼。我試過手動重新創建它,但我總是面對我不能命名我的第一陣列,這將導致以下問題:

array(2) { 
    [0]=> 
    array(1) { 
    ["core"]=> 
    array(0) { 
    } 

} 
    [1]=> 
    array(1) { 
    ["example"]=> 
    array(0) { 
    } 
    } 
} 

如果我想使用點符號這個陣列上:

\Config::get('permissions.core'); 

我得到一個未定義的索引錯誤。我的問題具體是,我如何重新創建'硬編碼'數組?我如何給我的第一個數組的名稱('核心'),所以我可以得到'硬編碼'的結果?

謝謝先進。

+2

向我們展示瞭如何動態生成的代碼。 –

+1

分享你如何試圖做到這一點的代碼。其次,配置助手只能使用配置文件數組。動態生成相同的數組無法讓您以同樣的方式訪問它,因爲您無法使用config facade和helper。 – Sandeesh

回答

0

好吧,我現在覺得很蠢。我問這個問題是因爲我把頭撞在桌子上(而不是字面意思),忘記了基本數組的工作原理。我希望在發佈時獲得新的見解。時採取了:

 $config = \Config::get('permissions'); 
     $modules = //retrieve modules 
     foreach($modules as $module){ 
      $config[$module->getSlug()] = array(); 
     } 
     \Config::set('permissions', $config); 

導致:

array(2) { 
    ["core"]=> 
    //the part below is from another method 
    array(4) { 
    [0]=> 
    string(9) "permission_1" 
    [1]=> 
    string(10) "permission_2" 
    [2]=> 
    string(10) "permission_3" 
    [3]=> 
    string(11) "permission_4" 
    } 
    ["module"]=> 
    array(0) { 
    } 
}