6. ORIGEN DE LAS ANOTACIONES
anotación
1. nota crítica o explicatoria agregados a un texto.
Java 1.5, especificación JSR-175 en 2002 y aprobadas en septiembre de 2004.
Las anotaciones no afectan directamente a la semántica del programa, pero afectan a
la forma en que los programas son tratados por herramientas y bibliotecas, que a su vez
pueden afectar a la semántica del programa en ejecución. Las anotaciones se pueden leer
en clases mediante reflexión en tiempo de ejecución.
#deSymfony @aferrandini
13. FRAMEWORK EXTRA BUNDLE
Agregar las anotaciones con use
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SensioBundleFrameworkExtraBundleConfigurationMethod;
use SensioBundleFrameworkExtraBundleConfigurationParamConverter;
use SensioBundleFrameworkExtraBundleConfigurationCache;
use SensioBundleFrameworkExtraBundleConfigurationTemplate;
14. ENRUTAMIENTO
# app/config/routing.yml
# importar rutas de una clase Controller
agenda:
resource: "@DeSymfonyWebBundle/Controller/AgendaController.php"
type: annotation
# importar todas las clases Controller de un directorio
web:
resource: "@DeSymfonyWebBundle/Controller"
type: annotation
Activar rutas con anotaciones
45. SYMFONY2 ~VALIDATOR
@AssertFile @AssertImage
use SymfonyComponentValidatorConstraints as Assert;
Restricciones de archivos
http://symfony.com/doc/current/book/validation.html
#deSymfony @aferrandini
48. Agregar las anotaciones con use
use JMSSecurityExtraBundleAnnotationSecure;
use JMSSecurityExtraBundleAnnotationSecureParam;
use JMSSecurityExtraBundleAnnotationSecureReturn;
use JMSSecurityExtraBundleAnnotationRunAs;
use JMSSecurityExtraBundleAnnotationSatisfiesParentSecurityPolicy;
JMSSECURITYEXTRABUNDLE
Johannes Schmitt
56. @RUNAS
Cambia el ROL de ejecución de un método
class AgendaPublicService
{
protected $agendaPrivateService;
/**
* @Secure(roles=”ROLE_USER”)
* @RunAs(roles=”ROLE_PRIVATE”)
*/
public function agendaMethod()
{
return $this
->agendaPrivateService
->agendaPrivate();
}
}
class AgendaPrivateService
{
/**
* @Secure(role=”ROLE_PRIVATE”)
*/
public function agendaPrivate()
{
// ...
}
}