【问题标题】:Symfony2 functions for use in a controller用于控制器的 Symfony2 函数
【发布时间】:2014-01-26 00:10:00
【问题描述】:

在 Symfony2 中是否应该以任何特殊方式声明函数(例如将给定字符串转换为数组)?请记住,该函数仅用于一个类,因此依赖注入无法完成这项工作。我个人喜欢的是不直接把它作为一个额外的函数放在控制器中,而是把它放在一个类中,这样就符合关注点分离了。

编辑示例

我会有这样的东西:

<?php
// ...
public function someAction(Request $request)
{
    $query = $request->query;

    // Do something with this data
    $data['somedata']['hello'] = $query->get('a');
    $data['someohterdata']['goodbye'] = $query->get('b');
    $data['c'] = $query->get('c');

    $response = new JsonResponse();

    $response->setData($data);
    return $response;
}

而我想要完成的是这样的事情

<?php

public function someAction(Request $request)
{
    $query = $request->query;

    // Access something outside this class
    $outsideClass = ...;
    $data = $outsideClass->createDataFromQuery($query);

    $response = new JsonResponse();

    $response->setData($data);
}

不确定什么是最佳做法,所以在这里询问。

【问题讨论】:

  • 静态方法调用whateverModel::convertStringToArray($string)?我可能仍然会注入对象......
  • 你建议我怎么注射?我对 PSR-0 自动加载很陌生。
  • 这可能取决于您需要做什么,以及此功能在逻辑上的位置。如果你能发布一个更具体的例子,我可以把我的 2 美分放进去:)
  • 刚刚编辑了我的问题并添加了一个例子,希望你明白:)
  • 听起来像是特定于控制器的东西,控制器中受保护的辅助方法怎么样?如果它不是特定于控制器的,您可能需要考虑在控制器中注入服务。

标签: php symfony symfony-2.4


【解决方案1】:

有一个简单的:

public function someAction(Request $request)
{
    $query = $request->query;

    // Access something outside this class
    $data = $query;

    $response = new JsonResponse();

    $response->setData($data);
}

这是一个正常的,如果你想使用动态响应

【讨论】:

  • 抱歉,这不是我想要的。查询中的变量在函数中具有别名,我未能在演示中显示。该函数改变了一些东西,然后返回它们。
猜你喜欢
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多