nwb/error-handler-php (1.1.9)
Installation
{
"repositories": [{
"type": "composer",
"url": " "
}
]
}
composer require nwb/error-handler-php:1.1.9
About this package
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 colonnecomponents
(en remplaçantsite
par le nom de votre classe etactionError
par le nom de votre fonction). Dans l'exemple ci-dessous, on exécute la fonctionactionError
de la classeSiteController
.
$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 dossieryii/views/NomController
( par exemple si votre fonction d'erreur est situé dans le controller SiteController alors placé votre vue dansyii/views/site
), le premier paramètre de la fonctionrender()
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 |