Introduction à PEAR_PackageUpdate

Introduction à PEAR_PackageUpdate – Un paquet pour ajouter la fonctionnalité d'auto mise à jour à d'autres paquets ou applications facilement.

A propos de PEAR::PackageUpdate

PEAR::PackageUpdate permet aux applications et autres paquets pear la possibilité de se mettre à jour eux-même, automatiquement en vérifiant d'abord sur leur channel PEAR la disponibilité de nouvelle version et d'ensuite selon les permissions de l'utilisateur effectuer la mise à jour. Ces fonctionnalités de mise à jour automatique aide les développeurs en réduisant le nombre de version différentes utilisées simultanément. This reduces the likely hood of bugs related to outdated versions being reported.

Ce paquet automatise le processus de mise à jour mais laisse à l'utilisateur la possibilité de garder le contrôle. PEAR::PackageUpdate respecte des préférences utilisateur lui permettant de décider non seulement si les paquets doivent être mis à jour mais aussi quand être alerté de la disponibilité de ces mises à jour. L'utilisateur peut décider de simplement être notifié quand une nouvelle release d'un niveau défini ou d'un certain type est disponible (bug fix, feature enhancement, or major version). L'utilisateur peut couper les fonctionnalités de mise à jour. Toutes les configurations sont basée paquet-par-paquet.

PEAR::PackageUpdate is designed to be a backend for other packages which provide different interface types. Par exemple, ce paquet peut être utilisé pour un frontend PHP-GTK 2, CLI ou HTML.

Exemple d'utilisation

<?php
class Foo {
    function __construct()
    {
        // On va essayer de mettre le package à jour si disponible.
        require_once 'PEAR/PackageUpdate.php';
        // On charge le driver PHP-GTK 2 driver pour mettre à jour pear://Foo
        $ppu = PEAR_PackageUpdate::factory('Gtk2', 'Foo', 'pear');

        // On vérifie que le driver a bien été chargé.
        if ($ppu !== false) {

            // On vérifie si une nouvelle version est disponible (respects user prefs).
            if ($ppu->checkUpdate()) {

                // Ask for permission to update.
                if ($ppu->presentUpdate()) {

                    if ($ppu->update()) {

                        // La mise à jour a été réussie. 
                        // L'application doit être redémarrée.
                        $ppu->forceRestart();
                    }
                }
            }
        }
        // ...
    }
    // ...
}
?>

Comment vérifier les avertissements et/ou les erreurs

Rather than stop on first error/warning encountered, as it's done by other PHP4 PEAR packages, PEAR::PackageUpdate used the PEAR_ErrorStack for advanced error handling.

PEAR_ErrorStack implements error raising and handling using a stack pattern. So, to determine whether there are any errors on the stack, you should use the PEAR_PackageUpdate::hasErrors(). And to retrieve each error/warning, one by one, from the stack, you have to use the PEAR_PackageUpdate::popError().

Regardez l'exemple ci-dessous:

L'utilisation des niveaux d'erreurs avec PEAR_PackageUpdate::hasErrors() n'est disponible qu'à partir de la version 0.7.0

<?php
class Foo {
    function __construct()
    {
        // On va essayer de mettre le package à jour si disponible.
        require_once 'PEAR/PackageUpdate.php';
        // On charge le driver CLI driver pour mettre à jour pear://Foo
        $ppu = PEAR_PackageUpdate::factory('Cli', 'Foo', 'pear');

        // On vérifie que le driver a bien été chargé.
        if ($ppu !== false) {

            // On vérifie si une nouvelle version est disponible (respects user prefs).
            if ($ppu->checkUpdate()) {

                // Ask for permission to update.
                if ($ppu->presentUpdate()) {

                    if ($ppu->update()) {
                        // La mise à jour a été réussie. 
                        // L'application doit être redémarrée.
                        $ppu->forceRestart();
                    } else {
                        // Error handling
                        if ($ppu->hasErrors('warning')) {
                            // Attention: Spécifier le niveau d'erreur n'est possible qu'à partir de la version 0.7.0
                            // Récupération du premier message d'avertissement, pas de tous
                            $error = $ppu->popError();
                            echo "Un message d'avertissement est survenu pendant la tentative de mise à jour: du paquet pear/Foo \n";
                            echo "Message: " . $error['message'] ."\n";
                        }
                        if ($ppu->hasErrors()) {
                            // Récupération de la première erreur, pas de toutes
                            $error = $ppu->popError();
                            echo "Une erreur est survenue pendant la tentative de mise à jour: du paquet pear/Foo \n";
                            echo "Message: " . $error['message'] ."\n";
                            if (isset($error['context']) {
                                // Le contexte est disponible
                                echo "*** Context: ***\n";
                                echo "Fichier: " . $error['context']['file'] ."\n";
                                echo "Ligne: " . $error['context']['line'] ."\n";
                                echo "Fonction: " . $error['context']['function'] ."\n";
                                echo "Classe: " . $error['context']['class'] ."\n";
                            }
                            exit();
                        }
                    }
                }
            }
        }
        // ...
    }
    // ...
}
?>

PEAR_PackageUpdate (Previous) Factory method for creating PEAR_PackageUpdate frontend instances. (Next)
Last updated: Sun, 29 Aug 2010 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.