Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 在哪里转换原始数据?_Symfony_Transform_Raw Data - Fatal编程技术网

Symfony 在哪里转换原始数据?

Symfony 在哪里转换原始数据?,symfony,transform,raw-data,Symfony,Transform,Raw Data,我要开始一个新的包。它的目标是显示一些统计数组和图表。问题是我不知道在视图的数组和图表中将原始数据转换为可用数据的位置。我读了很多关于保持控制器尽可能薄的文章。据我所知,存储库是用来提取数据,而不是转换数据 根据Symfony2最佳实践,我应该在哪里转换原始数据?这取决于您的应用程序,但根据您描述的内容,您需要定义一个服务,并在那里写入所有逻辑,以便您的控制器看起来像这样 $customService = $this->get('my_custom_service'); $data

我要开始一个新的包。它的目标是显示一些统计数组和图表。问题是我不知道在视图的数组和图表中将原始数据转换为可用数据的位置。我读了很多关于保持控制器尽可能薄的文章。据我所知,存储库是用来提取数据,而不是转换数据


根据Symfony2最佳实践,我应该在哪里转换原始数据?

这取决于您的应用程序,但根据您描述的内容,您需要定义一个
服务
,并在那里写入所有逻辑,以便您的控制器看起来像这样

$customService = $this->get('my_custom_service');
$data          = $customService->loadMyData();

阅读有关Symfony中服务的更多信息:

只需创建自己的自定义服务,使用一些存储库提取数据并将其转换为可用形式

样本:

// repository

interface MyRepository {
    public function findBySomething($something);
}

class MyRepositoryImpl extends EntityRepository implements MyRepository {
    public function findBySomething($something) {
        return $this->createQueryBuilder('a')
            ->where('a.sth = :sth')
            ->setParameter('std', $something)
            ->getQuery()
            ->getResult();
    }
}

// service

interface MyService {
    public function fetchSomeData();
}

class MyServiceImpl implements MyService {
    /** @var MyRespostiory */
    private $repo;

    public function __construct(MyRepository $repo) {
        $this->repo = $repo;
    }

    public function fetchSomeData() {
        $rawData = $this->repo->findBySomething(123);
        $data = [];

        // do sth

        return $data;
    }
}

// final usage, eg. within a constructor

class MyConstructor extends Controller {
    /** @var MyService */
    private $myService;

    public function __construct(MyService $myService) {
        $this->myService = $myService;
    }

    public function someAction() {
        // you could also get access to the service using $this->get('...')
        $data = $this->myService->fetchSomeData();

        return $this->render('SomeTemplate', [
            'data' => $data
        ]);
    }
}

// service declaration
<service id="myService" class="MyServiceImpl">
    <argument type="service" id="doctrine.repository.my_repository" />
</service>
//存储库
接口MyRepository{
公共功能由某物(某物)找到;
}
类MyRepositoryImpl扩展EntityRepository实现MyRepository{
公共函数findBySomething($something){
返回$this->createQueryBuilder('a')
->其中('a.sth=:sth')
->setParameter('std',$something)
->getQuery()
->getResult();
}
}
//服务
接口MyService{
公共函数fetchSomeData();
}
类MyServiceImpl实现MyService{
/**@var MyRespostiory*/
私人美元回购;
公共函数构造(MyRepository$repo){
$this->repo=$repo;
}
公共函数fetchSomeData(){
$rawData=$this->repo->findBySomething(123);
$data=[];
//做某事
返回$data;
}
}
//最终用途,如在构造函数中
类MyConstructor扩展控制器{
/**@var MyService*/
私人$myService;
公共函数构造(MyService$MyService){
$this->myService=$myService;
}
公共职能行动(){
//您还可以使用$this->get(“…”)访问该服务
$data=$this->myService->fetchSomeData();
返回$this->render('SomeTemplate'[
“数据”=>$data
]);
}
}
//服务声明