在Silex中建模业务逻辑的最佳方法是什么?

时间:2012-11-05 12:20:38

标签: php model-view-controller soa silex

我不确定我是否将Silex的整体概念放在哪里存储“业务逻辑”,这与持久性,观点等没有直接关系。

示例:在我的“演示应用”中,我需要一种方法来生成n个唯一数字。我需要模板中的这些数字来包含部分模板。我创建了一个RandomNumberServiceProvider,它可以在x和y之间返回n个数字。在我的$ app-closure中,我使用了这项服务,将随机数分配给了我的twig模板。完成。

更复杂的例子:假设你必须开发一个“复杂”的导入函数。您必须从磁盘读取数据,验证数据,以某种方式对其进行转换,最后将其存储到数据库中。在这种情况下,您是否还要创建一个ImportServiceProvider来访问其他服务(对于持久性......)?

1 个答案:

答案 0 :(得分:3)

类似的东西,是的。

虽然不是注入完整的服务,但我建议只注入工厂。这样,您可以防止应用程序逻辑泄漏到控制器(或其等价物)中,同时保持域对象专注于特定任务。

$factory = new \My\ServiceFactory( /* ..dependencies */ );

// --- SNIP

$app->get('/foo/{bar}', function ($app, $bar) use ($factory) {

    $someService = $factory->build( ... );
    // do something with $someService

    return new Response(...);
});