# Création de code-barres avec la classe Zend_Barcode

## Utilisation de la fabrique Zend_Barcode::factory

Zend_Barcode possède une méthode de fabrique pour créer une instance d'un générateur de rendu qui étend Zend_Barcode_Renderer_RendererAbstract. Ce méthode accepte 5 arguments.

1. Le nom du format de code-barres (ex. "code39") (obligatoire)

2. Le nom du générateur de rendu (ex. "image") (obligatoire)

3. Les options de l'objet code-barres (un tableau ou un objet Zend_Config) (optionnel)

4. Les options du générateur de rendu (un tableau ou un objet Zend_Config) (optionnel)

5. Booléen indiquant si le générateur automatique d'erreur est activé. Si une exception intervient, l'objet code-barres fourni sera remplacé par un objet représentant l'erreur (optionnel par défaut vaut `TRUE`)

Récupérer un générateur de rendu avec Zend_Barcode::factory()

Zend_Barcode::factory() instancie un objet code-barres et un générateur de rendu et les lie ensemble. Dans le premier exemple, nous allons utiliser le type de code-barres Code39 avec le générateur de rendu Image.

    // Seul le texte à écrire est obligatoire
    $barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
    // Pas d'options requises
    $rendererOptions = array();
    $renderer = Zend_Barcode::factory(
        'code39', 'image', $barcodeOptions, $rendererOptions
    );

Utiliser Zend_Barcode::factory() avec des objets Zend_Config

Vous pouvez fournir un objet Zend_Config à la fabrique afin de créer les objets souhaités. L'exemple suivant est fonctionnellement équivalent au précédent.

    // En utilisant seulement un objet Zend_Config
    $config = new Zend_Config(array(
        'barcode'        => 'code39',
        'barcodeParams'  => array('text' => 'ZEND-FRAMEWORK'),
        'renderer'       => 'image',
        'rendererParams' => array('imageType' => 'gif'),
    ));
    $renderer = Zend_Barcode::factory($config);

## Tracer un code-barres

Quand vous dessiner un code-barres, vous récupérez la ressource dans laquelle le code-barres est tracée. Pour ensuite tracer le code-barres, vous pouvez appeler la méthode draw() du générateur de rendu ou simplement utiliser la méthode proxy fournie par Zend_Barcode.

Tracer un code-barres avec l'objet générateur de rendu

    // Seul le texte à écrire est obligatoire
    $barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
    // Pas d'options requises
    $rendererOptions = array();
    // Tracé du code-barres dans une nouvelle image
    $imageResource = Zend_Barcode::factory(
        'code39', 'image', $barcodeOptions, $rendererOptions
    )->draw();

Trace un code-barres avec Zend_Barcode::draw()

    // Seul le texte à écrire est obligatoire
    $barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
    // Pas d'options requises
    $rendererOptions = array();
    // Tracé du code-barres dans une nouvelle image
    $imageResource = Zend_Barcode::draw(
        'code39', 'image', $barcodeOptions, $rendererOptions
    );

## Générer le rendu d'un code-barres

Quand vous générez un code-barres, vous dessinez le code-barres, vous envoyez les entêtes et vous envoyez la ressource (par exemple vers un navigateur). Pour rendre un code-barres, vous pouvez appeler la méthode render() du générateur de rendu ou simplement utiliser la méthode proxy fournie par Zend_Barcode.

Effectuer le rendu d'un code-barres avec l'objet générateur de rendu

    // Seul le texte à écrire est obligatoire
    $barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
    // Pas d'options requises
    $rendererOptions = array();
    // Tracé du code-barres dans une nouvelle image,
    // envoi des entêtes et de l'image
    Zend_Barcode::factory(
        'code39', 'image', $barcodeOptions, $rendererOptions
    )->render();

Ceci générera ce code-barres :

Effectuer le rendu d'un code-barres avec Zend_Barcode::render()

    // Seul le texte à écrire est obligatoire
    $barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
    // Pas d'options requises
    $rendererOptions = array();
    // Tracé du code-barres dans une nouvelle image,
    // envoi des entêtes et de l'image
    Zend_Barcode::render(
        'code39', 'image', $barcodeOptions, $rendererOptions
    );

Ceci générera le même code-barres que l'exemple précédent.