1 | <?php |
||
17 | class BandService extends EntityService |
||
18 | { |
||
19 | const ATTRIBUTE_MEMBERS = 'members'; |
||
20 | const CREATOR_DEFAULT_MEMBER_SHORT_DESCRIPTION = 'Founder'; |
||
21 | |||
22 | /** @var BandRepository */ |
||
23 | private $bandRepository; |
||
24 | |||
25 | /** @var BandMemberRepository */ |
||
26 | private $bandMemberRepository; |
||
27 | |||
28 | /** @var UserRepository */ |
||
29 | private $userRepository; |
||
30 | |||
31 | 12 | public function __construct( |
|
40 | |||
41 | public function processFormAndCreateBand(FormInterface $form, User $creator): FormInterface |
||
42 | { |
||
43 | return $this->createOrUpdateBand($form, $creator); |
||
44 | } |
||
45 | |||
46 | 2 | public function processFormAndUpdateBand(FormInterface $form, Band $band, User $creator): FormInterface |
|
50 | |||
51 | /** |
||
52 | * Create or update band. If no Band object passed, new one will be created |
||
53 | */ |
||
54 | 2 | private function createOrUpdateBand(FormInterface $form, User $creator, Band $band = null): FormInterface |
|
61 | |||
62 | 2 | private function createOrUpdateBandUsingForm( |
|
63 | FormInterface $form, |
||
64 | User $creator, |
||
65 | Band $band = null |
||
66 | ) { |
||
67 | 2 | if (!$form->isValid()) { |
|
68 | return null; |
||
69 | } |
||
70 | |||
71 | 2 | $membersData = $form->get(self::ATTRIBUTE_MEMBERS)->getData(); |
|
72 | |||
73 | 2 | if (!$membersData) { |
|
74 | $form->addError(new FormError(sprintf('Parameter "%s" is mandatory.', self::ATTRIBUTE_MEMBERS))); |
||
75 | |||
76 | return null; |
||
77 | } |
||
78 | |||
79 | 2 | $bandNewName = $form->get('name')->getData(); |
|
80 | 2 | $description = $form->get('description')->getData(); |
|
81 | |||
82 | 2 | if ($this->bandRepository->findOneByName($bandNewName)) { |
|
83 | 1 | $form->addError(new FormError(sprintf('Band with name "%s" already exists.', $bandNewName))); |
|
84 | |||
85 | 1 | return null; |
|
86 | } |
||
87 | |||
88 | 1 | if ($band) { |
|
89 | 1 | $band->setName($bandNewName); |
|
90 | 1 | $band->setDescription($description); |
|
91 | } else { |
||
92 | $band = new Band($bandNewName, $creator, $description); |
||
93 | $this->bandRepository->persist($band); |
||
94 | } |
||
95 | |||
96 | 1 | $bandMembers = $this->getBandMembersFromForm($band, $form); |
|
97 | 1 | $bandMembers[] = $this->createBandMemberFromCreator($band, $creator); |
|
98 | |||
99 | 1 | foreach ($bandMembers as $bandMember) { |
|
100 | 1 | $band->addMember($bandMember); |
|
101 | } |
||
102 | 1 | } |
|
103 | |||
104 | /** |
||
105 | * @return BandMember[] |
||
106 | */ |
||
107 | 1 | private function getBandMembersFromForm(Band $band, FormInterface $form): array |
|
133 | |||
134 | 1 | public function processFormAndUpdateBandMember(FormInterface $form, BandMember $bandMember): FormInterface |
|
149 | |||
150 | 2 | public function createBandMemberFromCreator(Band $band, User $creator): BandMember |
|
158 | } |
||
159 |
It seems like the type of the argument is not accepted by the function/method which you are calling.
In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.
We suggest to add an explicit type cast like in the following example: