$e->getMessage())); $renderer = static::makeRenderer($renderer, array()); } else { throw $e; } } $renderer->setAutomaticRenderError($automaticRenderError); return $renderer->setBarcode($barcode); } /** * Barcode Constructor * * @param mixed $barcode String name of barcode class, or Traversable object, or barcode object. * @param mixed $barcodeConfig OPTIONAL; an array or Traversable object with barcode parameters. * @throws Exception\InvalidArgumentException * @return Object */ public static function makeBarcode($barcode, $barcodeConfig = array()) { if ($barcode instanceof Object\ObjectInterface) { return $barcode; } /* * Convert Traversable argument to plain string * barcode name and separate configuration. */ if ($barcode instanceof Traversable) { $barcode = ArrayUtils::iteratorToArray($barcode); if (isset($barcode['barcodeParams']) && is_array($barcode['barcodeParams'])) { $barcodeConfig = $barcode['barcodeParams']; } if (isset($barcode['barcode'])) { $barcode = (string) $barcode['barcode']; } else { $barcode = null; } } if ($barcodeConfig instanceof Traversable) { $barcodeConfig = ArrayUtils::iteratorToArray($barcodeConfig); } /* * Verify that barcode parameters are in an array. */ if (!is_array($barcodeConfig)) { throw new Exception\InvalidArgumentException( 'Barcode parameters must be in an array or a Traversable object' ); } /* * Verify that an barcode name has been specified. */ if (!is_string($barcode) || empty($barcode)) { throw new Exception\InvalidArgumentException( 'Barcode name must be specified in a string' ); } return static::getObjectPluginManager()->get($barcode, $barcodeConfig); } /** * Renderer Constructor * * @param mixed $renderer String name of renderer class, or Traversable object. * @param mixed $rendererConfig OPTIONAL; an array or Traversable object with renderer parameters. * @throws Exception\RendererCreationException * @return Renderer\RendererInterface */ public static function makeRenderer($renderer = 'image', $rendererConfig = array()) { if ($renderer instanceof Renderer\RendererInterface) { return $renderer; } /* * Convert Traversable argument to plain string * barcode name and separate config object. */ if ($renderer instanceof Traversable) { $renderer = ArrayUtils::iteratorToArray($renderer); if (isset($renderer['rendererParams'])) { $rendererConfig = $renderer['rendererParams']; } if (isset($renderer['renderer'])) { $renderer = (string) $renderer['renderer']; } } if ($rendererConfig instanceof Traversable) { $rendererConfig = ArrayUtils::iteratorToArray($rendererConfig); } /* * Verify that barcode parameters are in an array. */ if (!is_array($rendererConfig)) { throw new Exception\RendererCreationException( 'Barcode parameters must be in an array or a Traversable object' ); } /* * Verify that an barcode name has been specified. */ if (!is_string($renderer) || empty($renderer)) { throw new Exception\RendererCreationException( 'Renderer name must be specified in a string' ); } return static::getRendererPluginManager()->get($renderer, $rendererConfig); } /** * Proxy to renderer render() method * * @param string | Object\ObjectInterface | array | Traversable $barcode * @param string | Renderer\RendererInterface $renderer * @param array | Traversable $barcodeConfig * @param array | Traversable $rendererConfig */ public static function render($barcode, $renderer, $barcodeConfig = array(), $rendererConfig = array()) { static::factory($barcode, $renderer, $barcodeConfig, $rendererConfig)->render(); } /** * Proxy to renderer draw() method * * @param string | Object\ObjectInterface | array | Traversable $barcode * @param string | Renderer\RendererInterface $renderer * @param array | Traversable $barcodeConfig * @param array | Traversable $rendererConfig * @return mixed */ public static function draw($barcode, $renderer, $barcodeConfig = array(), $rendererConfig = array()) { return static::factory($barcode, $renderer, $barcodeConfig, $rendererConfig)->draw(); } /** * Set the default font for new instances of barcode * * @param string $font * @return void */ public static function setBarcodeFont($font) { static::$staticFont = $font; } /** * Get current default font * * @return string */ public static function getBarcodeFont() { return static::$staticFont; } }