sibset / aop-feature-bundle
AOP features for Symfony 2
Installs: 16
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=5.3.3
- jms/aop-bundle: >=1.0.0
Requires (Dev)
- doctrine/doctrine-bundle: >=1.2.0
- doctrine/orm: >=2.2,<2.5-dev
Suggests
- doctrine/doctrine-bundle: The Doctrine Symfony bundle.
- doctrine/orm: The Doctrine ORM integration is optional in the bundle.
This package is not auto-updated.
Last update: 2024-11-04 16:01:40 UTC
README
Расширение Symfony Framework для аспектно-ориентированного программирования. Добавляет возможность указвывать аспекты для методов, уменьшая количество сквозного кода в приложении.
Аспекты
Расширение поставляет ряд готовых аспектов.
Logging
Аспект для логирования вызова метода.
<?php use SibSet\Bundle\AopFeatureBundle\Annotation as Aspect; /** * @Aspect\Logging("log.message.writer.user.create") */ public function createUser(User $user) { // ... }
В аннотации требуется указать идентификатор сервиса в контейнере зависмостей.
Сервис должен быть наследником класса SibSet\Bundle\AopFeatureBundle\Aspect\Logging\AbstractWriter
Transaction
Ипользование транзакции для метода
<?php use SibSet\Bundle\AopFeatureBundle\Annotation as Aspect; /** * @Aspect\Transactional */ public function createUser(User $user) { $this->getManager()->persist($user); $this->getManager()->flush($user); }
Вызов метода будет обернут в try...catch блок с вызовом commit() в try и rollback() в catch
SuppressException
Подавление исключений в методе, полезно использовать в связке с Logging
<?php use SibSet\Bundle\AopFeatureBundle\Annotation as Aspect; /** * @Aspect\SuppressException */ public function createUser(User $user) { throw new \Exception("All is dust!"); }
Возможно указать конкретный тип перехватываемого исключения
/**
* @Aspect\SuppressException("\RuntimeException")
*/
public function createUser(User $user)
Установка
Composer
Добавте зависимости в проектный файл composer.json
"require": {
# ..
"sibset/aop-feature-bundle": ">=1.0.0"
# ..
}
AppKernel.php
<?php public function registerBundles() { $bundles = array( // ... new JMS\AopBundle\JMSAopBundle(), new SibSet\Bundle\SibSetAopBundle(), ); // ... return $bundles; }