2016-12-15 47 views
1

我正在开发一个使用Silex和YAML的PHP​​应用程序。如何在YAML中表示PHP关闭?

现在我想用YAML语言概念表示一个PHP闭包。最好的方法是什么?有办法做到这一点?

以下代码是我想要“翻译”到YAML的示例。

'users' => function() use ($app) { 
    return new UserProvider(); 
} 

谢谢!

回答

0

这就是Symfony所做的:您首先将您的用户提供者定义为服务。随着Silex的,你可以做到这一点:

$app['my_user_provider'] = function() use ($app) { 
    return new UserProvider(); 
}; 

然后,在你的YAML配置,您通过您要使用的服务标识。类似于:

security: 
    user_provider: my_user_provider 
+0

我很确定他问的是如何定义服务,而不是如何使用服务。 Symfony容器允许您使用yaml定义服务。 Pimple容器(Silex使用的容器)没有。 – Cerad

+0

其实我不知道我是否清楚。我使用yaml设置了防火墙,所以我想表示如下: '$ app ['security.firewalls'] = array( 'admin'=> array( 'pattern'=>'^ /管理员, 'HTTP'=>真实, '使用者'=>()函数使用($ APP){ 返回新UserProvider(); } ), );' –

+0

不,你是清楚的。你只需要解析yaml并编译你的DIC。 – Federkun