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('[email protected]');
$bob->getEmail(); // [email protected]
$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!
This file contains everything you will need to use this bundle. For details on the use of the library, see the Accessible page.
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
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?
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 libraryantares_accessible.annotations.cache_driver
is the cache driver used by the library's annotation reader
You can use a custom annotations reader:
# app/config/services.yml
services:
antares_accessible.annotations.reader:
class: Doctrine\Common\Annotations\AnnotationReader
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'