Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Accessible Bundle Laravel Package

antares/accessible-bundle

View on GitHub
Deep Wiki
Context7

AccessibleBundle

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'
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky