/**
  * @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();
 }
Beispiel #3
0
 /**
  * @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);
     }
 }