News.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace WeWork\Message;
  3. class News implements ResponseMessageInterface, ReplyMessageInterface
  4. {
  5. /**
  6. * @var Article[]
  7. */
  8. private $articles;
  9. /**
  10. * @param Article[] $articles
  11. */
  12. public function __construct(array $articles)
  13. {
  14. $this->articles = $articles;
  15. }
  16. /**
  17. * @return array
  18. */
  19. public function formatForReply(): array
  20. {
  21. return [
  22. 'MsgType' => 'news',
  23. 'ArticleCount' => count($this->articles),
  24. 'Articles' => array_map(function (Article $article) {
  25. return $article->formatForReply();
  26. }, $this->articles)
  27. ];
  28. }
  29. /**
  30. * @return array
  31. */
  32. public function formatForResponse(): array
  33. {
  34. return [
  35. 'msgtype' => 'news',
  36. 'news' => [
  37. 'articles' => array_map(function (Article $article) {
  38. return $article->formatForResponse();
  39. }, $this->articles)
  40. ]
  41. ];
  42. }
  43. }