Php 我需要什么MVC?
通常,在TYPO3 Flows域驱动的MVC系统中有ActionController、存储库、模型和视图。在我们的项目中,我们使用一个包含Ressource的通用Php 我需要什么MVC?,php,model-view-controller,typo3-flow,Php,Model View Controller,Typo3 Flow,通常,在TYPO3 Flows域驱动的MVC系统中有ActionController、存储库、模型和视图。在我们的项目中,我们使用一个包含Ressource的通用文件模型 现在我们需要一个特殊的“专家”php脚本,比如一个不监听特定url操作的动作控制器。它应该得到这样一个文件对象,做一些内部的事情,比如记录东西,或者在一个特殊的过程后操作对象,并返回一个信息/返回错误 我需要什么mvc?接口?经理?你怎么称呼它,我怎么在TYPO3 Flow中初始化它?或者FileController(动作控制
文件模型
现在我们需要一个特殊的“专家”php脚本,比如一个不监听特定url操作的动作控制器。它应该得到这样一个文件
对象,做一些内部的事情,比如记录东西,或者在一个特殊的过程后操作对象,并返回一个信息/返回错误
我需要什么mvc?接口?经理?你怎么称呼它,我怎么在TYPO3 Flow中初始化它?或者FileController(动作控制器)正是我必须使用的东西
这个“专家”不应该听url操作,但应该像操作控制器一样使用,比如
$expertyThing = new ../../Expertything();
$expertyThing->doCoolStuff($file);
而且应该可以像PersistenceManager那样思考(通过注入或其他方式)
谢谢你的意见。我想说服务
,但我不确定我是否理解正确
我猜你有一些FileController
和createFileAction
,它从上传的资源中创建新的文件
模型,进行一些验证、转换、重命名,并使用注入的文件存储库
保存它。。你想要中间的东西
因此,我为My/FileManager/Domain/Service/FileService.php
创建FileService
——在那里注入存储库和其他服务。在操作或命令控制器中,我注入这些服务,它们做“专家”工作(我不必重复代码),比如:
// FileController
public function createFileAction(Resource $resource) {
try {
$file = $this->fileService->processAndSaveFile($resource);
} catch (\Exception $e) {
$this->addFlashMessage($e->getMessage(), '', Message::SEVERITY_ERROR);
$this->forwardToReferringRequest();
}
$this->addFlashMessage('File created');
$this->redirect('fileList');
}
所以对我来说,FileService为文件做一些专家的工作——它创建新的文件模型(可能使用FileFactory),使用其他服务(如ImageService)进行转换,注入了存储库和记录器(但您可以用于日志记录等情况)。。如果出现问题,它会抛出一些FileException
当然,FileService可能会实现一些FileService接口,您可以将此接口注入控制器,并在Objects.yaml
中定义应该使用哪个服务(它使它更灵活,因此其他人可以实现它并在不接触它的情况下替换您的FileService)
这种“服务”方式可能有点过时,所以也许有人会建议更好的解决方案。。如果你想遵循流程规则,只需检查他们如何处理官方软件包中的类似内容。我会说服务
,但我不确定我是否正确理解你的意思
我猜你有一些FileController
和createFileAction
,它从上传的资源中创建新的文件
模型,进行一些验证、转换、重命名,并使用注入的文件存储库
保存它。。你想要中间的东西
因此,我为My/FileManager/Domain/Service/FileService.php
创建FileService
——在那里注入存储库和其他服务。在操作或命令控制器中,我注入这些服务,它们做“专家”工作(我不必重复代码),比如:
// FileController
public function createFileAction(Resource $resource) {
try {
$file = $this->fileService->processAndSaveFile($resource);
} catch (\Exception $e) {
$this->addFlashMessage($e->getMessage(), '', Message::SEVERITY_ERROR);
$this->forwardToReferringRequest();
}
$this->addFlashMessage('File created');
$this->redirect('fileList');
}
所以对我来说,FileService为文件做一些专家的工作——它创建新的文件模型(可能使用FileFactory),使用其他服务(如ImageService)进行转换,注入了存储库和记录器(但您可以用于日志记录等情况)。。如果出现问题,它会抛出一些FileException
当然,FileService可能会实现一些FileService接口,您可以将此接口注入控制器,并在Objects.yaml
中定义应该使用哪个服务(它使它更灵活,因此其他人可以实现它并在不接触它的情况下替换您的FileService)
这种“服务”方式可能有点过时,所以也许有人会建议更好的解决方案。。如果您想遵循流程规则,只需检查他们如何处理官方软件包中的此类内容。抱歉,没有人重复。。。我仍在与那种情况作斗争。但是谢谢你的投入。到目前为止,这对我来说很有意义。对不起,没有人再告诉我。。。我仍在与那种情况作斗争。但是谢谢你的投入。到目前为止对我来说很有意义。