我的服务方法签名应该如何?

Joh*_*hnT 11 php zend-framework method-signature service-layer

我正在使用服务层,直到现在我使用了ServiceObject(实现了ArrayAccess,Iterator,Countable),但我想知道这是不是一个好主意.

你会怎么做:

ArticleService::createArticle($articleData, $userId);
Run Code Online (Sandbox Code Playgroud)

要么

ArticleService::createArticle(ServiceObject $data);
Run Code Online (Sandbox Code Playgroud)

在哪里$data:

array(
  'title' => 'Lorem ipsum',
  'body'  => 'Dolor sid amet',
  'userId' => 55,
);
Run Code Online (Sandbox Code Playgroud)

ServiceObject具有为每个方法提供通用签名的好处,但有时它看起来效率不高,并且它没有被广泛使用,它失去了它的兴趣.

任何反馈?

Hal*_*yon 5

将其更改为:

ArticleService::createArticle($title, $body, $user_id);
Run Code Online (Sandbox Code Playgroud)

这使得您非常清楚创建"文章"需要什么.

'选项'数组像你一样$articleData,$data并且不可能理智地智能化,我会建议反对它.

把你的想法写成一个通用的,ServiceObject这实际上是一个非常糟糕的主意.你的动机是高尚的,但这是错误的解决方案.

如果你需要更有说服力,请随意戳.

  • 它"太可怕了",因为签名并不是一个非常有用的签名.它只是说_"这个功能有输入"_,没有狗屎Sherlock:p你想知道你应该放在那里你想要一个非常简单的方法找出来,那么为什么不明白呢? (3认同)

gaR*_*Rex 0

我投票支持该对象,因为复杂系统中的代码完成是非常好的事情,而且还有一些自动验证,因为当您知道对象类型时,您可以以某种方式验证它。但如果 createSomething 中没有复杂的逻辑,那么数组也可以适合。