Un recorrido por las novedades que traerá Symfony 4 (cuando se publique en noviembre de 2017) y un primer vistazo a Symfony Flex, la nueva herramienta para crear y gestionar aplicaciones Symfony.
OpenSky es uno de los primeros grandes usuarios de Symfony desde su lanzamiento. Hoy en día cuenta con varios millones de usuarios activos. Compartiremos como OpenSky utiliza Symfony, Doctrine con MySQL y MongoDB y otros componentes.
También ofreceremos algunos tips de la infraestructura y la organización que posibilitan un crecimiento gradual, continuo y ágil.
Silex: Microframework y camino fácil de aprender SymfonyRyan Weaver
Ya quieres aprender Symfony? Bueno! Si eres en usuario de Drupal o si quieres aumentar sus habilidades, aprender Symfony puede ayudarte. Sin embargo, aprender Symfony puede ser difícil - y muchas ideas nuevas (pero buenas) como PHP namespaces, Composer, y código "object-oriented". Te presento a Silex: el Microframework que se construye por las mismos pedazos (HttpFoundation, HttpKernel, Composer, etc) como el Symfony Framework y Drupal 8. En esta charla, vamos a crear un mini-app con Silex para mostrarte como fácil puede ser y cuales partes son los mismos como Symfony y Drupal. Al fin, vas a estar listo entender Drupal 8 o crear su primer proyecto con Symfony.
Y porque esta charla sería mi primera en español, puedas disfrutar esta aventura conmigo :).
OpenSky es uno de los primeros grandes usuarios de Symfony desde su lanzamiento. Hoy en día cuenta con varios millones de usuarios activos. Compartiremos como OpenSky utiliza Symfony, Doctrine con MySQL y MongoDB y otros componentes.
También ofreceremos algunos tips de la infraestructura y la organización que posibilitan un crecimiento gradual, continuo y ágil.
Silex: Microframework y camino fácil de aprender SymfonyRyan Weaver
Ya quieres aprender Symfony? Bueno! Si eres en usuario de Drupal o si quieres aumentar sus habilidades, aprender Symfony puede ayudarte. Sin embargo, aprender Symfony puede ser difícil - y muchas ideas nuevas (pero buenas) como PHP namespaces, Composer, y código "object-oriented". Te presento a Silex: el Microframework que se construye por las mismos pedazos (HttpFoundation, HttpKernel, Composer, etc) como el Symfony Framework y Drupal 8. En esta charla, vamos a crear un mini-app con Silex para mostrarte como fácil puede ser y cuales partes son los mismos como Symfony y Drupal. Al fin, vas a estar listo entender Drupal 8 o crear su primer proyecto con Symfony.
Y porque esta charla sería mi primera en español, puedas disfrutar esta aventura conmigo :).
Esta presentación es la versión simplificada de la que se utilizó en las primeras Jornadas Symfony. Puedes ver la grabación en vídeo de la presentación original en http://bit.ly/symfony2
- - - - - - -
This is the simplified version of the presentation used at the first Spanish Symfony Conference. You can watch the video recording of the original presentation at http://bit.ly/symfony2
Presentación realizada en la JoInEA 2011, en la que se introduce a los conceptos básicos de la base de datos noSQL mongodb y como se integra con Symfony2.
New Symfony Tips & Tricks (SymfonyCon Paris 2015)Javier Eguiluz
This talk included tens of tips and tricks, new features and rarely used options for Symfony and its ecosystem. Besides the full-stack Symfony framework, other related technologies were mentioned, like Doctrine, Composer, Twig, PHPUnit and Monolog.
Twig is the template engine used by Drupal 8 and other modern PHP applications. Twig's expressiveness, consistency and secure-by-default policy are still unparalleled among PHP's template engines.
In this session you'll learn advanced techniques, tips and tricks useful for real-world applications and uncommonly used features that will allow you to master Twig.
A quick overview of tips, tricks and code snippets for developers using Symfony and all its ecosystem, from Monolog to Doctrine. Learn how to become more productive and discover some rarely used options and features.
Silex, desarrollo web ágil y profesional con PHPJavier Eguiluz
Silex es el microframework de moda en el mundo PHP. Silex te permite desarrollar aplicaciones web profesionales con una agilidad sin precedentes. Su aprendizaje es tan rápido y sencillo que podrás dominarlo en menos de una hora.
Esta presentación es la versión simplificada de la que se utilizó en las primeras Jornadas Symfony. Puedes ver la grabación en vídeo de la presentación original en http://bit.ly/symfony2
- - - - - - -
This is the simplified version of the presentation used at the first Spanish Symfony Conference. You can watch the video recording of the original presentation at http://bit.ly/symfony2
Presentación realizada en la JoInEA 2011, en la que se introduce a los conceptos básicos de la base de datos noSQL mongodb y como se integra con Symfony2.
New Symfony Tips & Tricks (SymfonyCon Paris 2015)Javier Eguiluz
This talk included tens of tips and tricks, new features and rarely used options for Symfony and its ecosystem. Besides the full-stack Symfony framework, other related technologies were mentioned, like Doctrine, Composer, Twig, PHPUnit and Monolog.
Twig is the template engine used by Drupal 8 and other modern PHP applications. Twig's expressiveness, consistency and secure-by-default policy are still unparalleled among PHP's template engines.
In this session you'll learn advanced techniques, tips and tricks useful for real-world applications and uncommonly used features that will allow you to master Twig.
A quick overview of tips, tricks and code snippets for developers using Symfony and all its ecosystem, from Monolog to Doctrine. Learn how to become more productive and discover some rarely used options and features.
Silex, desarrollo web ágil y profesional con PHPJavier Eguiluz
Silex es el microframework de moda en el mundo PHP. Silex te permite desarrollar aplicaciones web profesionales con una agilidad sin precedentes. Su aprendizaje es tan rápido y sencillo que podrás dominarlo en menos de una hora.
This is the winner proposal of the Sismo Challenge programming contest organized by ibuildings.
Reference: http://techportal.ibuildings.com/2012/04/17/sismo-challenge-results/
La primera parte de la presentación trata de la seguridad en Symfony2, explicando los conceptos de autenticación y autorización.
La segunda parte muestra cómo crear el backend o parte de administración de un sitio web. Primero se hace todo a mano, luego se utiliza el generador de código de Symfony2 y por último se utiliza el Sonata Admin Bundle.
"Twig, cuando Django encontró a Symfony" fue la primera ponencia impartida durante el segundo día de las Jornadas Symfony 2011.
Durante la misma, se explican las características más destacadas del motor de plantillas Twig, empezando con las más adecuadas para diseñadores/maquetadores y siguiendo después con las características para desarrolladores.
También se mencionan brevemente las ventajas de la integración de Twig en Symfony2 y se concluye con un ejemplo práctico del uso de Twig en proyectos PHP propios.
Backend fue la quinta ponencia impartida durante el primer día de las Jornadas Symfony 2011. Se trata de la quinta parte de las seis que forman el tutorial de desarrollo de la aplicación github.com/desymfony.
Durante la misma se explica cómo crear a mano la parte de administración de la aplicación. También se explica cómo proteger la parte de administración con la protección que ofrece HTTP y con usuarios creados en memoria y no en base de datos. Por último, se muestra brevemente cómo utilizar el nuevo generador interactivo para crear automáticamente una administración básica.
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosJavier Eguiluz
Instalación y primeros pasos fue la primera ponencia impartida durante las Jornadas Symfony 2011. Se trata de la primera parte de las seis que forman el tutorial de desarrollo de la aplicación github.com/desymfony.
Durante la misma se explIca cómo instalar y configurar Symfony2, cómo instalar el proyecto deSymfony, cómo crear los bundles con el generador interactivo y también se introduce el funcionamiento de la arquitectura MVC en Symfony2 mediante la programación de la parte dedicada a mostrar las páginas estáticas de la aplicación.
Las Jornadas Symfony 2011 comenzaron con una breve introducción a Symfony2.
Durante la presentación se muestran algunas de las características más destacadas de Symfony2 a través de diez palabras clave.
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaAMADO SALVADOR
Distribuidor Oficial Ariston en Valencia: Amado Salvador distribuidor autorizado de Ariston, una marca líder en soluciones de calefacción y agua caliente sanitaria. Amado Salvador pone a tu disposición el catálogo completo de Ariston, encontrarás una amplia gama de productos diseñados para satisfacer las necesidades de hogares y empresas.
Calderas de condensación: Ofrecemos calderas de alta eficiencia energética que aprovechan al máximo el calor residual. Estas calderas Ariston son ideales para reducir el consumo de gas y minimizar las emisiones de CO2.
Bombas de calor: Las bombas de calor Ariston son una opción sostenible para la producción de agua caliente. Utilizan energía renovable del aire o el suelo para calentar el agua, lo que las convierte en una alternativa ecológica.
Termos eléctricos: Los termos eléctricos, como el modelo VELIS TECH DRY (sustito de los modelos Duo de Fleck), ofrecen diseño moderno y conectividad WIFI. Son ideales para hogares donde se necesita agua caliente de forma rápida y eficiente.
Aerotermia: Si buscas una solución aún más sostenible, considera la aerotermia. Esta tecnología extrae energía del aire exterior para calentar tu hogar y agua. Además, puede ser elegible para subvenciones locales.
Amado Salvador es el distribuidor oficial de Ariston en Valencia. Explora el catálogo y descubre cómo mejorar la comodidad y la eficiencia en tu hogar o negocio.
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaAMADO SALVADOR
Descubre el catálogo general de la gama de productos de refrigeración del fabricante de electrodomésticos Miele, presentado por Amado Salvador distribuidor oficial Miele en Valencia. Como distribuidor oficial de electrodomésticos Miele, Amado Salvador ofrece una amplia selección de refrigeradores, congeladores y soluciones de refrigeración de alta calidad, resistencia y diseño superior de esta marca.
La gama de productos de Miele se caracteriza por su innovación tecnológica y eficiencia energética, garantizando que cada electrodoméstico no solo cumpla con las expectativas, sino que las supere. Los refrigeradores Miele están diseñados para ofrecer un rendimiento óptimo y una conservación perfecta de los alimentos, con características avanzadas como la tecnología de enfriamiento Dynamic Cooling, sistemas de almacenamiento flexible y acabados premium.
En este catálogo, encontrarás detalles sobre los distintos modelos de refrigeradores y congeladores Miele, incluyendo sus especificaciones técnicas, características destacadas y beneficios para el usuario. Amado Salvador, como distribuidor oficial de electrodomésticos Miele, garantiza que todos los productos cumplen con los más altos estándares de calidad y durabilidad.
Explora el catálogo completo y encuentra el refrigerador Miele perfecto para tu hogar con Amado Salvador, el distribuidor oficial de electrodomésticos Miele.
KAWARU CONSULTING presenta el projecte amb l'objectiu de permetre als ciutadans realitzar tràmits administratius de manera telemàtica, des de qualsevol lloc i dispositiu, amb seguretat jurídica. Aquesta plataforma redueix els desplaçaments físics i el temps invertit en tràmits, ja que es pot fer tot en línia. A més, proporciona evidències de la correcta realització dels tràmits, garantint-ne la validesa davant d'un jutge si cal. Inicialment concebuda per al Ministeri de Justícia, la plataforma s'ha expandit per adaptar-se a diverses organitzacions i països, oferint una solució flexible i fàcil de desplegar.
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
HPE presenta una competició destinada a estudiants, que busca fomentar habilitats tecnològiques i promoure la innovació en un entorn STEAM (Ciència, Tecnologia, Enginyeria, Arts i Matemàtiques). A través de diverses fases, els equips han de resoldre reptes mensuals basats en àrees com algorísmica, desenvolupament de programari, infraestructures tecnològiques, intel·ligència artificial i altres tecnologies. Els millors equips tenen l'oportunitat de desenvolupar un projecte més gran en una fase presencial final, on han de crear una solució concreta per a un conflicte real relacionat amb la sostenibilitat. Aquesta competició promou la inclusió, la sostenibilitat i l'accessibilitat tecnològica, alineant-se amb els Objectius de Desenvolupament Sostenible de l'ONU.
23. Un framework de bajo nivel
• Conlosaños,Symfonysehaido
convirtiendoenunframeworkdebajonivel.
• EstamosmáscercadePHPquedeofrecer
funcionalidadescompletas.
• Noesalgomalo,siemprequeincluyas
tambiénutilidadesdealtonivel.
32. Webpack Encore por dentro
• EstáprogramadoconJavaScript,noPHP.
• InternamentehaceusodeWebpack.
• Encorees"simplemente"unaformasencilla
deconfigurarWebpack.
34. Symfony + Webpack Encore
yarn / npm
Node.js
Webpack
Webpack Encore
Composer
PHP
Symfony
35. Webpack Encore en la práctica
• Soportatodoloqueseusaenaplicaciones
front-endmodernas(preprocessors,PostCSS,
React,Babel,VUE,sourcemaps,versioning,CDNs,hot
modulereplacements,etc.)
• Tambiénsirveparaaplicacionesclásicaso
sencillas(e.j.BootstrapyjQuery)
36. Definiendo los assets con Webpack Encore
package.json
webpack.config.js
assets/
app.scss
app.js
39. Paso 2: crear webpack.config.js
var Encore = require('@symfony/webpack-encore');
Encore
.setOutputPath('web/build/')
.setPublicPath('/build')
.autoProvidejQuery()
.enableSassLoader()
.addEntry('js/app', ['./assets/app.js'])
.addStyleEntry('css/app', ['./assets/app.scss'])
;
module.exports = Encore.getWebpackConfig();
40. Paso 3: crear tus propios SCSS y JS
@import "~bootstrap-sass";
body {
color: $primary-color;
// ...
}
assets/app.scss
import 'jquery';
import 'bootstrap-sass';
window.addEventListener('load', function () {
// ...
});
assets/app.js
41. Paso 4: generar los assets finales
// mientras desarrollas la aplicación en local
$ ./node_modules/.bin/encore dev
$ ./node_modules/.bin/encore dev --watch
// en el servidor de producción
$ ./node_modules/.bin/encore production
56. Creando un microservicio
$ symfony new mi-micro-servicio
Preparing project...
✔ Symfony 3.3.2 was successfully installed. Now you can:
* Change your current directory to /proyectos/mi-micro-servicio
* Configure your application in app/config/parameters.yml file.
* Run your application
Downloading Symfony...
5.8 MiB/5.8 MiB ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100%
65. AHORA: src/Kernel.php
use SymfonyBundleFrameworkBundleKernelMicroKernelTrait;
use SymfonyComponentHttpKernelKernel as BaseKernel;
final class Kernel extends BaseKernel
{
use MicroKernelTrait;
public function getCacheDir();
public function getLogDir();
public function registerBundles();
protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader);
protected function configureRoutes(RouteCollectionBuilder $routes);
}
66. Conceptos que desaparecen en Symfony 4
• SymfonyStandardEdition
• SymfonyFull-StackFramework
• DistribucionesSymfony
• SensioDistributionBundle
72. Ventajas de la nueva estructura
• Más"plana"yfácildenavegar.
• Centralizacontenidosmanejadospor
personasajenasalbackend(assets/,templates/)
• DesacopladodeSymfony(assets/,src/,
templates/,web/)
78. El código se define bajo el namespace App
// src/Controller/UserController.php
namespace App;
use SymfonyBundleFrameworkBundleControllerController;
class UserController extends Controller
{
// ...
}
79. Los dos namespaces definidos por defecto
{
"...": "...",
"autoload": {
"psr-4": { "App": "src/" }
},
"autoload-dev": {
"psr-4": { "AppTests": "tests/" }
}
}
composer.json
96. Cómo carga Symfony 4 la configuración
namespace App;
use SymfonyBundleFrameworkBundleKernelMicroKernelTrait;
use SymfonyComponentConfigLoaderLoaderInterface;
use SymfonyComponentDependencyInjectionContainerBuilder;
use SymfonyComponentHttpKernelKernel as BaseKernel;
final class Kernel extends BaseKernel
{
use MicroKernelTrait;
// ...
protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
{
$confDir = dirname(__DIR__).'/etc';
$loader->load($confDir.'/packages/*.{php,xml,yaml}', 'glob');
if (is_dir($confDir.'/packages/'.$this->environment)) {
$loader->load($confDir.'/packages/'.$this->environment.'/**/*.{php,xml,yaml}, 'glob');
}
$loader->load($confDir.'/container.{php,xml,yaml}', 'glob');
}
}
110. Compatibilidad de Symfony Flex
SYMFONY
3.2
SYMFONY
3.3
SYMFONY
3.4
SYMFONY
4.0
SYMFONY
4.1
NO funciona SI funciona
Se usa por defecto
(pero sigue siendo opcional)
129. Crear un proyecto Symfony SIN Flex
$ symfony new mi-proyecto/
ȭ 10 segundos
✔ Symfony 3.3.2 was successfully installed. Now you can:
* Change your current directory to /proyectos/mi-micro-servicio
* Configure your application in app/config/parameters.yml file.
* Run your application
130. Crear un proyecto Symfony CON Flex
$ composer create symfony/skeleton mi-proyecto
ȭ 1 minuto
What's next?
* Run your application:
1. Change to the project directory
2. Execute the make serve command;
3. Browse to the http://localhost:8000/ URL.
* Read the documentation at https://symfony.com/doc
131. Código PHP en vendor/
*se incluyen todos los tests
106,3551,546
archivos líneas de código
132. Symfony 3.2 vs Symfony 3.3 + Flex
106,3551,546
archivos líneas de código
362,5645,274
-70% -70%
168. Paso 3: instala las dependencias
$ cd tu-proyecto/
$ composer install
169. Paso 3: instala las dependencias
$ cd tu-proyecto/
$ composer install
TRUCO
Esto hará que Symfony Flex genere
todos los archivos de configuración
en etc/packages/*.yaml
170. Paso 4: Retoca la configuración si hace falta
Compruebaloscontenidosdeconfig.yml,
config_dev.ymlyconfig_prod.ymlycopiala
configuraciónquehagafaltaenlosnuevos
archivosetc/packages/*.yaml
171. Paso 4: Retoca la configuración si hace falta
Compruebaloscontenidosdeconfig.yml,
config_dev.ymlyconfig_prod.ymlycopiala
configuraciónquehagafaltaenlosnuevos
archivosetc/packages/*.yaml
CUIDADO
Esta es la parte más aburrida y
donde más fácilmente se pueden
cometer errores.
172. Paso 5: Mueve tu código a src/
• Mejorcaso:todotucódigoestáenAppBundle
Copiaelcódigodirectamenteensrc/ycambiael
namespacedeAppBundleaAppconPHPStorm
• Peorcaso:tienesmuchosbundles
Puedesmantenerlos(cambiandoelnamespaceaApp)
perodeberíasirplanteándoteeliminarlos
176. ¿Por qué usas Silex en vez de Symfony?
• Másrendimiento
• Menoscódigo
• Menosdependencias
• Menosconfiguración
177. Silex vs "Viejo Symfony"
Silex Viejo Symfony
Más Rendimiento
Menos Dependencias
Menos Líneas de código
Menos Configuración
Más Funcionalidades RAD
Mejor Ecosistema
178. Silex vs "Nuevo Symfony" (Flex)
Silex Nuevo Symfony
Más Rendimiento
Menos Dependencias
Menos Líneas de código
Menos Configuración
Más Funcionalidades RAD
Mejor Ecosistema