2012-02-19 56 views
0

有倒閉的能力代碼是相當新的,所以我不知道是否有一個「標準的方式」來做到這一點還沒有,但...包括在PHP配置文件

有沒有好辦法在PHP配置文件中包含一個函數?現在,我正在使用的項目使用JSON作爲配置文件,但是我看不到任何包含PHP函數的方法。

我希望能夠做這樣的事情(使用JSON語法)


的conf文件:

{ 
    myFunc: function($arg) { 
     return $arg . ' is an argument'; 
    } 
} 

應用:

json_with_func_literal_decode(...); 

它不一定要使用JSON語法,儘管那會是b很好。只要合理,速度並不是一個問題。我想避免使用eval(),這是解決這個問題的明顯方法。

+0

我這個糾結問題和**恕我直言**封閉是最好的東西,離開了實際的配置文件。實際上,我認爲你的配置指令應該只包含原始字符串/ ints/float。使用lambda等新的語言功能來完成簡單的任務是很時髦的,但是如果你堅持基本的(例如字符串類名),那麼像你的應用程序配置這樣的東西將更具可移植性(和可讀性)。當您使用只能通過PHP配置文件實現的功能時,您將無法將您的指令存儲在YAML/XML/JSON等中。 – rdlowrey 2012-02-19 17:57:50

回答

3

你可以簡單地使用PHP文件,而無需解析JSON/YAML的配置,像這樣的開銷:

<?php 
return array(
    'foo' => 'bar', 
    'myFunc' => function() 
    { 
     // ... 
    } 
); 

和檢索像這樣配置:

$config = include 'config.php'; 
+0

您是否可以解釋「返回」是如何工作的?但除此之外,這真的很酷。 – 2012-02-19 17:30:32

+1

「如果當前腳本文件是include()ed,則返回[],那麼給予return()的值將作爲include()調用的值返回」 - http://php.net/manual /en/function.return.php – Vitamin 2012-02-19 17:34:09