PHPackages                             programulin/errors-handler - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. programulin/errors-handler

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

programulin/errors-handler
==========================

1.1.0(7y ago)015PHPPHP &gt;=5.4.0

Since Apr 5Pushed 7y agoCompare

[ Source](https://github.com/programulin/errors-handler)[ Packagist](https://packagist.org/packages/programulin/errors-handler)[ RSS](/packages/programulin-errors-handler/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (3)Used By (0)

Простая библиотека обработки ошибок в PHP.
==========================================

[](#простая-библиотека-обработки-ошибок-в-php)

Ошибки отлавливаются с помощью функций:

- set\_error\_handler
- set\_exception\_handler
- register\_shutdown\_function

Обработать их (записать в логи, вывести html-шаблон и т.п.) можно в callback-функции, которую нужно передать в метод register.

Установка
---------

[](#установка)

```
composer require programulin/errors-handler

```

Примеры
-------

[](#примеры)

Базовое использование:

```
use Programulin\ErrorHandler\ErrorHandler;

$handler = new ErrorHandler();

$handler->register(function($message, $exception) {
	var_dump($message);
	var_dump($exception);
});
```

$message содержит текст ошибки, $exception - исключение (или null), из которого вы можете получить trace.

Дополнительные методы:

```
// Аналог ini_set('display_errors', 'off');
$handler->setDisplayErrors('off');

// Аналог error_reporting(E_ALL);
$handler->setErrorReporting(E_ALL);

// Перечисляем уровни ошибок, которые наш обработчик должен игнорировать
$handler->disallow([E_NOTICE, E_STRICT]);

// Превращает не фатальные ошибки в исключения
$handler->throwErrors(true);
```

Сокращённый вариант:

```
(new ErrorHandler())->register(function($message, $exception) {
	var_dump($message);
	var_dump($exception);
})
	->setDisplayErrors('off')
	->setErrorReporting(E_ALL)
	->disallow([E_STRICT])
	->throwErrors(true);
```

Пример использования с библиотекой Monolog:

```
require 'vendor/autoload.php';

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Programulin\ErrorHandler\ErrorHandler;

$logger = new Logger('errors');
$logger->pushHandler(new StreamHandler('errors.log'));

(new ErrorHandler())->register(function($message, $exception) use ($logger) {
	$logger->error($message, [
		'exception' => $exception,
		'uri' => $_SERVER['REQUEST_URI']
	]);
})
	->setDisplayErrors('off')
	->setErrorReporting(E_ALL)
	->disallow([E_STRICT])
	->throwErrors(true);
```

Особенности
-----------

[](#особенности)

При установке throwErrors в true не фатальные ошибки превратятся в исключения (кроме вызванных с подавлением @, а также относящихся к уровням, переданным в метод disallow). Это значит, что после отлова ошибки дальнейшее выполнение скрипта не произойдёт:

```
(new ErrorHandler())->register(function($message){
	var_dump($message);
})->throwErrors(true);

// Поскольку $title не определена, эта строка вызовет ошибку E_NOTICE, которая превратится в исключение
echo $title;

// Эта строка кода уже не будет выполнена
echo 'test';
```

Чтобы продолжить выполнение скрипта, можно использовать try-catch:

```
(new ErrorHandler())->register(function($message){
	var_dump($message);
})->throwErrors(true);

try {
	echo $title;
} catch(\Exception $e) {
	echo 'Ошибка отловлена';
}

// Теперь эта строка будет выполнена
echo 'test';
```

###  Health Score

25

—

LowBetter than 35% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

2644d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4b81553fa8096deea815e14c899cab0b65398b02e9b7bfd4031168f9a44eb1f9?d=identicon)[programulin](/maintainers/programulin)

---

Top Contributors

[![programulin](https://avatars.githubusercontent.com/u/22643100?v=4)](https://github.com/programulin "programulin (9 commits)")

### Embed Badge

![Health badge](/badges/programulin-errors-handler/health.svg)

```
[![Health](https://phpackages.com/badges/programulin-errors-handler/health.svg)](https://phpackages.com/packages/programulin-errors-handler)
```

###  Alternatives

[daftspunk/laravel-config-writer

Laravel provider to be able to rewrite configuration

17651.1k1](/packages/daftspunk-laravel-config-writer)[jackabox/nova-duplicate-field

A Laravel Nova field to duplicate records.

31115.2k](/packages/jackabox-nova-duplicate-field)[odiseoteam/sylius-report-plugin

Plugin for Sylius to make customizable reports.

3278.5k](/packages/odiseoteam-sylius-report-plugin)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
