AOP Features Bundle
, (*1)
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Symfony Framework Π΄Π»Ρ Π°ΡΠΏΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΠ°Π·Π²ΡΠ²Π°ΡΡ Π°ΡΠΏΠ΅ΠΊΡΡ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΡΠΌΠ΅Π½ΡΡΠ°Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ., (*2)
ΠΡΠΏΠ΅ΠΊΡΡ
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΄ Π³ΠΎΡΠΎΠ²ΡΡ
Π°ΡΠΏΠ΅ΠΊΡΠΎΠ²., (*3)
Logging
ΠΡΠΏΠ΅ΠΊΡ Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π°., (*4)
<?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
, (*5)
Transaction
ΠΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄Π°, (*6)
<?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, (*7)
SuppressException
ΠΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ²ΡΠ·ΠΊΠ΅ Ρ Logging, (*8)
<?php
use SibSet\Bundle\AopFeatureBundle\Annotation as Aspect;
/**
* @Aspect\SuppressException
*/
public function createUser(User $user)
{
throw new \Exception("All is dust!");
}
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, (*9)
/**
* @Aspect\SuppressException("\RuntimeException")
*/
public function createUser(User $user)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
Composer
ΠΠΎΠ±Π°Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» composer.json, (*10)
"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;
}