delormejonathan/accessible-bundle

A bundle to easily use Accessible in Symfony projects.

v1.3.1 2020-05-08 10:23 UTC

This package is auto-updated.

Last update: 2024-04-08 19:44:53 UTC


README

SensioLabsInsight Dependency Status Latest Stable Version License

AccessibleBundle provides an Accessible integration for your Symfony projects. This will allow you to define your class behavior using powerful annotations.

Here is a (very) basic example:

class Customer
{
  use AutomatedBehaviorTrait;

  /**
   * @Access({Access::GET, Access::SET})
   * @Assert\Email
   */
  private $email;
}


$bob = new Customer();

$bob->setEmail('bob@example.com');
$bob->getEmail(); // bob@example.com
$bob->setEmail('not an email address'); // throws an InvalidArgumentException

Here the library is used to generate getters and setters, but it can also be used to manage constructors, attributes initialization, collections and associations between classes!

Suggestions and contributions are welcome!

Documentation

This file contains everything you will need to use this bundle. For details on the use of the library, see the Accessible page.

Installation

First add the bundle in your Composer dependencies:

composer require antares/accessible-bundle

Then, register the bundle in your kernel:

// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...

        new Antares\Bundle\AccessibleBundle\AntaresAccessibleBundle()
    );
}

In order to be compatible with the PropertyAccess component you should also add the following lines in your configuration:

# app/config/config.yml
framework:
  property_access:
    magic_call: true

Configuration

The configuration of this bundle is quite simple, take a look:

# app/config/config.yml
antares_accessible:
    cache:
        enable: true # default: false
    constraints_validation:
        enable: false # default: true
        validate_initialize_values: true # default: %kernel.debug%

Note that you don't need to set the configuration as everything is already configured by default.

Here are the meanings of the configuration values:

  • cache.enable: Do you want a cache driver to be used?
  • constraints_validation.enable: Do you want your class setters to use constraints validation?
  • constraints_validation.validate_initialize_values: Do you want the @Initialize and @InitializeObject values to be validated?

Use a custom cache driver

By default, instances of Doctrine\Common\Cache\PhpFileCache are used. If you have APC enabled, you should replace the cache driver. You can do it like this:

# app/config/services.yml

parameters:
    antares_accessible.cache_driver.class: Doctrine\Common\Cache\ApcCache

services:
    antares_accessible.cache.driver:
        class: "%antares_accessible.cache_driver.class%"
    antares_accessible.annotations.cache_driver:
        class: "%antares_accessible.cache_driver.class%"
  • antares_accessible.cache.driver is the cache driver used by the library
  • antares_accessible.annotations.cache_driver is the cache driver used by the library's annotation reader

Use a custom annotations reader

You can use a custom annotations reader:

# app/config/services.yml

services:
    antares_accessible.annotations.reader:
        class: Doctrine\Common\Annotations\AnnotationReader

Use a custom validator

You can also use a custom constraints validator, for example, if your project already uses the validator service, you can use it also with this library like this:

# app/config/services.yml

services:
    antares_accessible.constraints_validation.validator: '@validator'