/** * @param CallbackBag $callbackBag * @return CollectionInterface */ protected function getCollection(CallbackBag $callbackBag) { if (is_array($callbackBag->getProperty())) { return new ArrayCollection($callbackBag->getProperty()); } if (interface_exists('Doctrine\\Common\\Collections\\Collection') && $callbackBag->getProperty() instanceof Collection) { return new DoctrineArrayCollection($callbackBag->getProperty()); } throw new \InvalidArgumentException("Property must be an array or a collection!"); }
/** * @param CallbackBag $callbackBag * @return mixed */ public function callback(CallbackBag $callbackBag) { if (count($callbackBag->getArguments()) !== 0) { throw new \InvalidArgumentException($this->getPrefix() . ' accessor allows no argument!'); } return $callbackBag->getProperty(); }
/** * @param CallbackBag $callbackBag */ protected function updateCollectionProperty(CallbackBag $callbackBag) { $object = $callbackBag->getObject(); $propertyName = $callbackBag->getName(); $oldValues = $callbackBag->getProperty(); $newValues = $callbackBag->getArgument(0); $addMethod = Add::PREFIX . ucfirst($propertyName); $removeMethod = Remove::PREFIX . ucfirst($propertyName); foreach ($oldValues as $oldValue) { $object->{$removeMethod}($oldValue); } foreach ($newValues as $newValue) { $object->{$addMethod}($newValue); } }