2012-02-19 95 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