https://github.com/attributes-php/wp-exceptions
Don't feel sorry to interrupt. WordPress exceptions made simple.
https://github.com/attributes-php/wp-exceptions
Last synced: 5 months ago
JSON representation
Don't feel sorry to interrupt. WordPress exceptions made simple.
- Host: GitHub
- URL: https://github.com/attributes-php/wp-exceptions
- Owner: Attributes-PHP
- License: mit
- Created: 2023-03-17T13:21:24.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-05-16T10:59:36.000Z (about 2 years ago)
- Last Synced: 2025-04-19T00:08:15.643Z (about 1 year ago)
- Language: PHP
- Size: 37.1 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# WP Exceptions
------
*WP_Error* was a cool feature in 2007 but today we should throw exceptions.
## Features
- Handles *HttpExceptions* like WP_Error's
- Supports custom handlers for custom exceptions
- Compatible with other exception handlers (e.g. [Whoops](https://github.com/filp/whoops))
## Requirements
- PHP 8.1+
- WordPress 6.x
We aim to support versions that haven't reached their end-of-life.
## Installation
```bash
composer require attributes-php/wp-exceptions
```
## How it works?
Once the ExceptionHandler is registered, you can start throwing exceptions
```php
use Attributes\Wp\Exceptions\ExceptionHandler;
ExceptionHandler::register();
```
How HttpExceptions are displayed?
WordPress itself handles how an HttpException
is displayed to the user. In a nutshell, those exceptions are converted into a WP_Error
which is then handled by WordPress via wp_die function.
This means, that the following types of requests are supported:
- ✅ Ajax
- ✅ JSON
- ✅ JSONP
- ✅ XMLRPC
- ✅ XML
- ✅ All other types e.g. HTML
How to send custom HTTP headers?
```php
throw new HttpException(headers: ['My-Header' => 'Value 123']);
```
How to add custom handlers?
```php
$exceptionHandler = ExceptionHandler::getOrCreate();
$exceptionHandler->onException(CustomException::class, fn($ex) => echo "A custom exception has been raised");
```
Ensure to add handlers which supports all types of possible requests e.g. JSON, XML, etc
Sage theme support
If you are using Sage theme, you would need to register or re-register
this exception handler after the application is configured. Otherwise, this exception handler might be overrided.
```php
// themes/sage/functions.php
Application::configure()
->withProviders([
App\Providers\ThemeServiceProvider::class,
])
->boot();
ExceptionHandler::register(force: true); // We are using force true in case the ExceptionHandler has been registered before e.g. in a plugin
```
WP Exceptions was created by **[André Gil](https://www.linkedin.com/in/andre-gil/)** and is open-sourced software licensed under the **[MIT license](https://opensource.org/licenses/MIT)**.