nwb/error-handler-php (1.1.9)

Published 2025-06-06 13:04:42 +00:00 by drone_publisher

Installation

{
	"repositories": [{
			"type": "composer",
			"url": ""
		}
	]
}
composer require nwb/error-handler-php:1.1.9

About this package

nwb error handler for php

error-handler-php

Le projet error-handler-php est une bibliothèque PHP permettant de gérer et de signaler les erreurs dans les projets PHP, qu'ils utilisent un framework ou non. Il facilite l'intégration avec le système de gestion de projets ClickUp.

Préparation de la destination pour les erreurs

Vous devez choisir la liste de destination dans ClickUp pour recevoir les erreurs de votre projet. Il faut ensuite paramétrer les 4 champs du google doc des bugs mutualisés N8N clickUp

  • origin -> nom-du-projet
  • TEAM NAME -> 20493360
  • SPACE NAME -> id clickup de l'espace de l'équipe
  • FOLDER NAME -> id clickup du dossier
  • LIST NAME -> id clickup de la liste de destination

Installation dans un projet

Si il n'est pas déjà présent, ajouter la référence du dépôt des modules communs PHP NwB dans composer.json

{
  "repositories": [
    {
      "type": "composer",
      "url": "https://git.nwb.fr/api/packages/modules-communs-php/composer"
    }
  ]
}

Exécuter à partir de votre conteneur de développement :

composer require nwb/error-handler-php:1.*.*

Utilisation

Php sans framework

à insérer dans un fichier central du projet (exemple : constant.php ou connexiondb.php ou index.php)

use Nwb\ErrorHandler\ErrorHandler;
$error_handler = new ErrorHandler("origin",true);
$error_handler->register();
  • "origin" doit être remplacé par le nom du projet qui peut comporter des caractères alphanumériques et des tirets.
  • Un deuxième paramètre peut être placé dans le constructeur pour activer ou désactiver l'affichage d'une popup lors d'une erreur. Par défaut, il est à true et peut être passé à false pour être désactivé. Il faut que l'instance de la classe soit appelée tout le temps avec les set que vous voulez utiliser

Php avec Yii

Pour les projets qui utilise Yii il faut faire plusieurs modifications :

  • Il faut passer la constante "YII_DEBUG" à false.
  • Importez la classe ErrorHandler dans votre code :
use ErrorHandler\ErrorHandler;

Créez une nouvelle fonction (par exemple, actionError()) dans votre contrôleur (par exemple, SiteController.php) et ajoutez le code suivant :

public function actionError()
{
    $error_handler = new ErrorHandler("NOM_DU_PROJET");

    $exception = Yii::$app->errorHandler->exception;
    $error_info = $error_handler->actionErrorYii($exception);

    return $this->render('error', ['error_info' => $error_info]);
}

La fonction $error_handler->actionErrorYii() renvoie un tableau avec les informations de l'erreur

  • Ensuite dans yii/config/web.php , Il faudra ajouter ceci dans $config dans la colonne components (en remplaçant site par le nom de votre classe et actionError par le nom de votre fonction). Dans l'exemple ci-dessous, on exécute la fonction actionError de la classe SiteController.
    $config = [
        'id' => 'my-app',
        'basePath' => dirname(__DIR__),
        'bootstrap' => ['log'],
        'components' => [
            'request' => [
                'cookieValidationKey' => 'your-secret-key',
            ],
            'errorHandler' => [ // https://www.yiiframework.com/doc/guide/2.0/en/runtime-handling-errors#using-error-actions
                'errorAction' => 'site/error', // errorAction permet de désigner qu'elle fonction sera éxecuter lors d'une erreur. exemple ici on éxecutera la fonction "actionError" de la class Site
            ],
            'log' => [
                'traceLevel' => YII_DEBUG ? 3 : 0,
                'targets' => [
                    [
                        'class' => 'yii\log\FileTarget',
                        'levels' => ['error', 'warning'],
                    ],
                ],
            ],
            'urlManager' => [
                'enablePrettyUrl' => true,
                'showScriptName' => false,
                'rules' => [
                ],
            ],
        ],
    ];
  • Il est aussi possible de faire une redirection sur une page d'erreur en utilisant la fonction render(), pour cela il suffit de crée un fichier dans le dossier yii/views/NomController ( par exemple si votre fonction d'erreur est situé dans le controller SiteController alors placé votre vue dans yii/views/site), le premier paramètre de la fonction render() est le nom de votre fichier sans son extension, puis en deuxième un tableau avec les valeurs que vous voulez passer dans la vue.

Php avec Yii GPT4 WIP

Configurez le gestionnaire d'erreur pour PHP avec Yii2

Si vous utilisez le framework Yii2, suivez les étapes ci-dessous : Ouvrez le fichier SiteController.php (ou le contrôleur de votre choix) et ajoutez les lignes suivantes en haut du fichier pour importer la classe ErrorHandler :

use Nwb\ErrorHandler\ErrorHandler;

Créez une nouvelle fonction (par exemple, actionError()) dans votre contrôleur (par exemple, SiteController.php) et ajoutez le code suivant :

public function actionError()
{
    $error_handler = new ErrorHandler("NOM_DU_PROJET");

    $exception = Yii::$app->errorHandler->exception;
    $error_info = $error_handler->actionErrorYii($exception);

    return $this->render('error', ['error_info' => $error_info]);
}

Ouvrez le fichier config/web.php et modifiez la section errorHandler comme suit :

'errorHandler' => [
    'errorAction' => 'site/error',
],

Assurez-vous de remplacer 'site/error' par la route de la fonction que vous avez créée à l'étape précédente (par exemple, 'site/error' pour la fonction actionError() dans SiteController.php).

Créez une vue pour afficher l'erreur Créez un fichier error.php dans le dossier views/site (ou le dossier correspondant à votre contrôleur) et ajoutez le code HTML et PHP nécessaire pour afficher les informations d'erreur. Vous pouvez accéder aux informations d'erreur via la variable $error_info passée à la vue :

<?php
/* @var $this yii\web\View */
/* @var $error_info array */

use yii\helpers\Html;

$this->title = 'Erreur';

?>
<div class="site-error">
    <h1><?= Html::encode($this->title) ?></h1>

    <div class="alert alert-danger">
        <?= nl2br(Html::encode($error_info['message'])) ?>
    </div>

    <p>
        L'erreur ci-dessus s'est produite lors du traitement de votre demande.
    </p>
    <p>
        Veuillez contacter l'administrateur si vous pensez qu'il s'agit d'une erreur serveur. Merci.
    </p>
</div>

Lancer les tests du projet

./vendor/bin/phpunit

Dependencies

Dependencies

ID Version
ext-curl *
ext-json *
php >=7.2

Development Dependencies

ID Version
phpunit/phpunit ^8.5 || ^9.0 || ^10.0
Details
Composer
2025-06-06 13:04:42 +00:00
198
NWB
9.2 KiB
Assets (1)
Versions (16) View all
1.1.9 2025-06-06
1.1.8 2024-11-25
1.1.7 2024-10-29
1.1.5 2024-09-18
1.1.4 2024-09-18