Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

InterNations/ExceptionBundle

Open more actions menu

Repository files navigation

ExceptionBundle

Build Status

Clean exception handling for your Symfony 2 bundles

ExceptionBundle helps you managing the exceptions of your bundle:

  • Generate exception subclasses from command line including a marker interface
  • Replace all global throw statements in a bundle with bundle specific exception classes

Why should you care?

  • The simpler exceptions are distinguishable by type, the simpler exceptional conditions are handled
  • Providing a marker interface all bundle exception classes implement allows clients to dramatically simplify exception handling
  • Usually, creating all the exception sub classes by hand is cumbersome, ExceptionBundle can help you

Usage

Generate bundle specific exception subclasses

This command will generate a bunch of exceptions

php app/console exception:generate app/src/MyVendor/MyBundle "MyVendor\MyBundle" ExceptionInterface RuntimeException DomainException

ls app/src/MyVendor/MyBundle/Exception

ExceptionInterface.php  RuntimeException.php  DomainException.php

cat app/src/MyVendor/MyBundle/Exception/RuntimeException.php

<?php
namespace MyVendor\MyBundle\Exception;

use RuntimeException as BaseRuntimeException;

class RuntimeException extends BaseRuntimeException implements ExceptionInterface
{
}

You can also specify the shortcut "spl" to subclass all Spl Exceptions

Rewrite bundle exceptions

ExceptionBundle uses PHP Parser to rewrite all throw statements in a bundle code base.

cat app/src/MyVendor/MyBundle/MyClass.php

<?php
namespace MyVendor\MyBundle;

use RuntimeException;
...
    throw new RuntimeException('Runtime error');
...
    throw new \InvalidArgumentException('Invalid argument');

php app/console exception:rewrite app/src/MyVendor/MyBundle "MyVendor\MyBundle"

Rewrites the code to:

<?php
namespace MyVendor\MyBundle;

use MyVendor\MyBundle\Exception\InvalidArgumentException;
use MyVendor\MyBundle\Exception\RuntimeException;
...
    throw new RuntimeException('Runtime error');
...
    throw new InvalidArgumentException('Invalid argument');
...

Installation

Add internations/exception-bundle to your composer.json and edit AppKernel.php like this:

<?php
...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            ...
        );

        if ($this->debug) {
            $bundles[] = new InterNations\Bundle\ExceptionBundle\InterNationsExceptionBundle();
        }
    }
}

About

Helps making your Symfony Bundle a good Exception citizen. Yes, it’s opinionated.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.