SlideShare a Scribd company logo
1 of 120
Download to read offline
Creating Mobile Apps with
PHP & Symfony2
Pablo Godel @pgodel
http://joind.in/8675
Symfony Live, Portland, May 22 2013
Thursday, May 23, 13
⁃ Born in Argentina, living in the US since 1999
⁃ PHP & Symfony developer
⁃ Founder of the original PHP mailing list in spanish
⁃ Master of the parrilla
⁃ Co-founder of ServerGrove
Who am I?!
Thursday, May 23, 13
Thursday, May 23, 13
Thursday, May 23, 13
⁃ Founded ServerGrove Networks in 2005
⁃ Provider of web hosting specialized in PHP,
Symfony, ZendFramework, MongoDB and others
⁃ Servers in USA and Europe!
Who am I?!
Thursday, May 23, 13
⁃ Very active open source supporter through code
contributions and usergroups/conference sponsoring
Community is our Teacher
Thursday, May 23, 13
Why?
Mobile Apps - Why
Thursday, May 23, 13
•More & more people have access to Internet through
mobile devices
Mobile Apps - Why
Thursday, May 23, 13
•More & more people have access to Internet through
mobile devices
•Devices are more powerful & versatile
Mobile Apps - Why
Thursday, May 23, 13
•More & more people have access to Internet through
mobile devices
•Devices are more powerful & versatile
•Internet access is faster and more reliable
Mobile Apps - Why
Thursday, May 23, 13
•More & more people have access to Internet through
mobile devices
•Devices are more powerful & versatile
•Internet access is faster and more reliable
•Users demand services and applications on the go at all
times
Mobile Apps - Why
Thursday, May 23, 13
•More & more people have access to Internet through
mobile devices
•Devices are more powerful & versatile
•Internet access is faster and more reliable
•Users demand services and applications on the go at all
times
•Don’t give advantages in an ultra-competitive market
Mobile Apps - Why
Thursday, May 23, 13
Some numbers...
Mobile Apps - Why
Thursday, May 23, 13
•Estimated 6.5 billion mobile subscriptions globally (over
90%)
Mobile Apps - Why
Thursday, May 23, 13
•Estimated 6.5 billion mobile subscriptions globally (over
90%)
•1.7 billion mobile phones sold in 2012
Mobile Apps - Why
Thursday, May 23, 13
•Estimated 6.5 billion mobile subscriptions globally (over
90%)
•1.7 billion mobile phones sold in 2012
•1 billion users in China alone
Mobile Apps - Why
Thursday, May 23, 13
•Estimated 6.5 billion mobile subscriptions globally (over
90%)
•1.7 billion mobile phones sold in 2012
•1 billion users in China alone
•321M subscriptions in the US (over 100%)
Mobile Apps - Why
Thursday, May 23, 13
•Estimated 6.5 billion mobile subscriptions globally (over
90%)
•1.7 billion mobile phones sold in 2012
•1 billion users in China alone
•321M subscriptions in the US (over 100%)
•Devices range from phone and tablets to door locks,
thermostats, TVs, Cars, etc.
Mobile Apps - Why
Thursday, May 23, 13
How did we get here?
Mobile Apps - Why
Thursday, May 23, 13
Let’s see some history...
Mobile Apps - History
Thursday, May 23, 13
First commercial cellular network launched in
Japan )1G - first generation(
1979
Mobile Apps - History
Thursday, May 23, 13
The “mobile” telephone
Motorola DynaTAC -
aka “The Boot”
cost: US$ 3995
weight:793g / 28 ounces
1983 Motorola DynaTAC
Mobile Apps - History
Thursday, May 23, 13
Common Standard to connect networks and
apps
•WAP client
•Server sends WML (XML)
WAP - Wireless Application Protocol
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML
1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml" >
<wml>
<card id="main" title="First Card">
<p mode="wrap">This is a sample WML
page.</p>
</card>
</wml>
1997
Mobile Apps - History
Thursday, May 23, 13
WAP/WML
Mobile Apps - History
Thursday, May 23, 13
WAP/WML
Mobile Apps - History
Thursday, May 23, 13
WAP/WML
Mobile Apps - History
Thursday, May 23, 13
Developer:
WAP/WML
Mobile Apps - History
Thursday, May 23, 13
User:
WAP/WML
Mobile Apps - History
Thursday, May 23, 13
2007...
Mobile Apps - History
Thursday, May 23, 13
•Revolutionized
the market of
mobile telephony
•Safari Web Client
iPhone2007
Mobile Apps - History
Thursday, May 23, 13
iPhone App Store2007
Mobile Apps - History
Thursday, May 23, 13
First Android Device2008
Mobile Apps - History
Thursday, May 23, 13
iPad2010
Mobile Apps - History
Thursday, May 23, 13
So what does all
this mean?
Mobile Apps - History
Thursday, May 23, 13
The PC is not dead
The Mobile Generation
Mobile Apps - History
Thursday, May 23, 13
The PC is not dead, yet?
The Mobile Generation
Mobile Apps - History
Thursday, May 23, 13
Information is now consumed on phones and tablets
The Mobile Generation
Mobile Apps - History
Thursday, May 23, 13
And this is just the beginning...
The Mobile Generation
Mobile Apps - History
Thursday, May 23, 13
Mobile Apps - Symfony
Thursday, May 23, 13
Mobile Apps - Symfony
Definition by Fabien Potencier:
⁃ Symfony2 is a reusable set of standalone,
decoupled, and cohesive PHP components
that solve common web development
problems.
⁃ Based on these components, Symfony2 is
also a full-stack web framework.
http://fabien.potencier.org/article/49/what-is-symfony2
Thursday, May 23, 13
25 high quality
components
http://symfony.com/doc/current/components/index.html
Mobile Apps - Symfony
Thursday, May 23, 13
• DependencyInjection
• EventDispatcher
• HttpFoundation
• DomCrawler
• ClassLoader
• CssSelector
• HttpKernel
• BrowserKit
• Templating
• Translation
• Serializer
• Validator
• Security
• Routing
• Console
• Process
• Config
• Finder
• Locale
• Yaml
• Form
• ...
Components:
GitHub: http://github.com/symfony
Mobile Apps - Symfony
Thursday, May 23, 13
Mobile Apps - Symfony
Silex
The PHP/‘Symfony’ micro-framework
http://silex.sensiolabs.org/
// web/index.php
require_once __DIR__.'/../vendor/autoload.php';
$app = new SilexApplication();
$app->get('/hello/{name}', function ($name) use ($app) {
return 'Hello '.$app->escape($name);
});
$app->run();
Thursday, May 23, 13
Why Symfony?
Mobile Apps - Symfony
Thursday, May 23, 13
•Provides solid base to build good HTTP &
RESTful APIs
Mobile Apps - Symfony
Thursday, May 23, 13
•Provides solid base to build good HTTP &
RESTful APIs
•Twig makes it easy to build templates for
mobile devices
Mobile Apps - Symfony
Thursday, May 23, 13
•Provides solid base to build good HTTP &
RESTful APIs
•Twig makes it easy to build templates for
mobile devices
•Re-use code for different devices thanks to
templates, controllers and routing
Mobile Apps - Symfony
Thursday, May 23, 13
•Provides solid base to build good HTTP &
RESTful APIs
•Twig makes it easy to build templates for
mobile devices
•Re-use code for different devices thanks to
templates, controllers and routing
•Bundles + Composer = Endless possibilities!
Mobile Apps - Symfony
Thursday, May 23, 13
&
Mobile Web Applications
Mobile Apps - Web Apps
Thursday, May 23, 13
http://forecast.io
Mobile Apps - Web Apps
Thursday, May 23, 13
Frameworks HTML / Javascript
• iui
http://code.google.com/p/iui/ (one of the first ones)
• JQuery Mobile
http://jquerymobile.com/ (Open source)
• JQTouch
http://jqtouch.com/ (Open source)
• DHTMLX Touch
http://dhtmlx.com/touch/ (Open source)
• The M Project
http://www.the-m-project.org/ (Open source)
• Sensa Touch
http://www.sencha.com/products/touch/
Mobile Apps - Web Apps
Thursday, May 23, 13
jQuery Mobile
Mobile Apps - Web Apps
Thursday, May 23, 13
Supports:
- IOS (iPhone/iPad)
- Android
- Blackberry
- Windows Phone
- palm webOS
- symbian
jQuery Mobile
Mobile Apps - Web Apps
Thursday, May 23, 13
jQuery Mobile
Mobile Apps - Web Apps
Thursday, May 23, 13
•Based on jQuery
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
•Based on jQuery
•Light (40KB)
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
•Based on jQuery
•Light (40KB)
•HTML5
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
•Based on jQuery
•Light (40KB)
•HTML5
•Accessible (works on screen readers)
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
•Based on jQuery
•Light (40KB)
•HTML5
•Accessible (works on screen readers)
•Events, plugins, themes
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
•Based on jQuery
•Light (40KB)
•HTML5
•Accessible (works on screen readers)
•Events, plugins, themes
•Lots of documentation
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
•Page management
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
•Page management
•Transitions
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
•Page management
•Transitions
•Dialog windows
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
•Page management
•Transitions
•Dialog windows
•Links and buttons
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
•Page management
•Transitions
•Dialog windows
•Links and buttons
•Navigation bars
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
•Page management
•Transitions
•Dialog windows
•Links and buttons
•Navigation bars
•Header / Footer
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
•Page management
•Transitions
•Dialog windows
•Links and buttons
•Navigation bars
•Header / Footer
•Forms
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
•Page management
•Transitions
•Dialog windows
•Links and buttons
•Navigation bars
•Header / Footer
•Forms
•Lists
jQuery Mobile - Features
Mobile Apps - Web Apps
Thursday, May 23, 13
jQuery Mobile - Page management
<body>
<!-- Start of first page -->
<div data-role="page" id="foo">
! <div data-role="content">!
! ! <p>I'm first in the source order so I'm shown as the page.
</p>!!
! ! <p>View internal page called <a href="#bar">bar</a></p>!
! </div><!-- /content -->
</div><!-- /page -->
</body>
Mobile Apps - Web Apps
Thursday, May 23, 13
<body>
<!-- Start of first page -->
<div data-role="page" id="foo">
! <div data-role="content">!
! ! <p>View internal page called <a href="#bar">bar</a></p>!
! </div><!-- /content -->
</div><!-- /page -->
<!-- Start of second page -->
<div data-role="page" id="bar">
! <div data-role="content">!
! ! <p><a href="#foo">Back to foo</a></p>!
! </div><!-- /content -->
</div><!-- /page -->
</body>
jQuery Mobile - Page management
Mobile Apps - Web Apps
Thursday, May 23, 13
jQuery Mobile - Transitions
<a href="foo.html" data-rel="dialog" data-transition="pop">Open dialog</a>
<a href="foo.html" data-rel="dialog" data-transition="slidedown">Open dialog</a>
<a href="foo.html" data-rel="dialog" data-transition="flip">Open dialog</a>
<a href="foo.html" data-rel="dialog" data-transition="fade">Open dialog</a>
Mobile Apps - Web Apps
Thursday, May 23, 13
jQuery Mobile - Dialogs
Mobile Apps - Web Apps
Thursday, May 23, 13
jQuery Mobile - Navigation bars
<div data-role="header" data-position="inline">
! <a href="index.html" data-icon="delete">Cancel</a>
! <h1>Edit Contact</h1>
! <a href="index.html" data-icon="check">Save</a>
</div>
Mobile Apps - Web Apps
Thursday, May 23, 13
jQuery Mobile - Forms
Mobile Apps - Web Apps
Thursday, May 23, 13
jQuery Mobile - Forms
Mobile Apps - Web Apps
Thursday, May 23, 13
jQuery Mobile - Lists
Mobile Apps - Web Apps
Thursday, May 23, 13
&
jQuery Mobile
Mobile Apps - Web Apps
Thursday, May 23, 13
Templates
Mobile Apps - Web Apps
Thursday, May 23, 13
<!DOCTYPE html>
<html>
<head>
	

 <title>Podisum by ServerGrove</title>
	

 <meta name="viewport" content="width=device-width, initial-
scale=1">
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
layout.html.twig
Mobile Apps - Web Apps
Thursday, May 23, 13
{% extends "layout.html.twig" %}
{% block content %}
<div data-role="page" id="home">
<div data-role="header">
<h1>Podisum</h1>
</div>
<div data-role="content">
<1-- ... -->
</div>
</div>
index.html.twig
Mobile Apps - Web Apps
Thursday, May 23, 13
<div data-role="header" data-theme="b">
<h1>{{title}}</h1>
<a href="#home" data-icon="home" data-iconpos="notext" data-direction="reverse"
class="ui-btn-right jqm-home" data-ajax="false">Home</a>
</div>
header.html.twig
Mobile Apps - Web Apps
Thursday, May 23, 13
{% extends "layout.html.twig" %}
{% block content %}
{% include “header.html.twig’ %}
<div data-role="content">
<1-- ... -->
</div>
</div>
index.html.twig
Mobile Apps - Web Apps
Thursday, May 23, 13
Routing
Mobile Apps - Web Apps
Thursday, May 23, 13
home:
pattern: /
defaults: { _controller: DemoBundle:Default:index }
talks:
pattern: /talks.{_format}
defaults: { _controller: DemoBundle:Talk:index, _format: html }
requirements:
_format: html|xml|ics
talk:
pattern: /talk/{slug}
defaults: { _controller: DemoBundle:Talk:talk }
jQuery Mobile & Symfony / Routing
Mobile Apps - Web Apps
Thursday, May 23, 13
jQuery Mobile & Symfony / Routing
home:
pattern: /m
defaults: { _controller: DemoBundle:Default:index,_format:mhtml }
talks:
pattern: /m/talks
defaults: { _controller: DemoBundle:Talk:index, _format:mhtml }
talk:
pattern: /m/talk/{slug}
defaults: { _controller: DemoBundle:Talk:talk, _format:mhtml }
Mobile Apps - Web Apps
Thursday, May 23, 13
jQuery Mobile & Symfony / Routing
(option 2)
home:
pattern: /m
defaults: { _controller: DemoBundle:Default:index, mobile:true }
talks:
pattern: /m/talks
defaults: { _controller: DemoBundle:Talk:index, mobile:true }
talk:
pattern: /m/talk/{slug}
defaults: { _controller: DemoBundle:Talk:talk, mobile:true }
Mobile Apps - Web Apps
Thursday, May 23, 13
m_home:
pattern: /m
defaults: { _controller: DemoBundle:Mobile:index }
jQuery Mobile & Symfony / Routing
(option 3)
Mobile Apps - Web Apps
Thursday, May 23, 13
Controllers & Actions
Mobile Apps - Web Apps
Thursday, May 23, 13
jQuery Mobile & Symfony / Controller & Action
public function indexAction()
{
$em = $this->get('doctrine')->getEntityManager();
// ...
$format = $this->get('request')->getRequestFormat();
return $this->render('DemoBundle:Default:index.'.$format.'.twig', array(
// ...
));
}
Mobile Apps - Web Apps
Thursday, May 23, 13
Detect Mobile Devices
•http://mobiledetect.net/
•Symfony2 + MobileDetectBundle
•Silex + MobileDetectServiceProvider
Mobile Apps - Web Apps
Thursday, May 23, 13
Mobile Apps - Web Apps
MobileDetectBundle
public function indexAction()
{
$em = $this->get('doctrine')->getEntityManager();
// ...
$mobileDetector = $this->get('mobile_detect.mobile_detector');
$tpl = $mobileDetector->isMobile() ? ‘mhtml’ : ‘html’;
return $this->render('DemoBundle:Default:index.'.$tpl.'.twig', array(
// ...
));
}
Thursday, May 23, 13
Mobile Apps - Web Apps
MobileDetectBundle
{% if is_mobile() %}
{% if is_tablet() %}
{% if is_device('iphone') %} # magic methods is[...]
{% extends is_mobile() ? "MyBundle:Layout:mobile.html.twig" :
"MyBundle:Layout:full.html.twig" %}
Thursday, May 23, 13
Mobile Apps - Web Apps
MobileDetectBundle
mobile_detect:
redirect:
mobile:
is_enabled: true
host: http://m.site.com
status_code: 301
action: redirect
tablet: ~
switch_device_view: ~
Thursday, May 23, 13
•Symfony2 functional tests for HTML pages
•For AJAX other testing methods may be used:
•Selenium RC
•Behat
Mobile Apps - Web Apps
Testing
Thursday, May 23, 13
DEMOS !
Podisum:
http://github.com/pgodel/podisum
sunshinephp
http://m.sunshinephp.com/
Control Panel:
•https://control.servergrove.com/
•https://control.servergrove.com/m
login: demo@servergrove.com
password: demo
Mobile Apps - Web Apps
Thursday, May 23, 13
Podisum http://github.com/pgodel/podisum
•Generates summaries of Logstash events
•Silex app
•Twig templates
•Mobile version
Mobile Apps - Web Apps
Thursday, May 23, 13
Podisum
Mobile Apps - Web Apps
Thursday, May 23, 13
Podisum
Apache access_log Logstash
Redis
Podisum redis-client
MongoDB
Podisum Silex App
Web Client
Mobile Apps - Web Apps
Thursday, May 23, 13
Mobile Apps
&
Native Applications
Thursday, May 23, 13
•iPhone - Objective-C
•Android - Java
•Windows Mobile - .NET
•Frameworks multi-platform
⁃ PhoneGap http://phonegap.com
⁃ rhomobile http://rhomobile.com
⁃ Appceledator http://appcelerator.com
⁃ Corona http://anscamobile.com/corona/
Mobile Apps - Native Apps
Thursday, May 23, 13
Mobile Apps - Native Apps
PHP does not run in these
devices but native apps need to
retrieve and store data from
servers.
Thursday, May 23, 13
Common uses:
•send emails & messages in general
•loading of profile data
•authentication & authorization
•chats
Mobile Apps - Native Apps
PHP does not run in these
devices but native apps need to
retrieve and store data from
servers.
Thursday, May 23, 13
Some considerations:
•Design API (RESTful, HTTP, XML-RPC) early on at
the development cycle
Mobile Apps - Native Apps
Thursday, May 23, 13
Some considerations:
•Design API (RESTful, HTTP, XML-RPC) early on at
the development cycle
•APIs can be used by multiple types of clients
Mobile Apps - Native Apps
Thursday, May 23, 13
Some considerations:
•Design API (RESTful, HTTP, XML-RPC) early on at
the development cycle
•APIs can be used by multiple types of clients
•Re-use controllers and use _format to generate
different content types (XML, JSON, etc)
Mobile Apps - Native Apps
Thursday, May 23, 13
Build APIs with Symfony2
- FOSRestBundle
https://packagist.org/packages/friendsofsymfony/rest-
bundle
- ApiDocBundle
https://packagist.org/packages/nelmio/api-doc-bundle
Mobile Apps - Native Apps
Thursday, May 23, 13
Build APIs with Symfony2
- FOSRestBundle
https://packagist.org/packages/friendsofsymfony/rest-
bundle
- ApiDocBundle
https://packagist.org/packages/nelmio/api-doc-bundle
Mobile Apps - Native Apps
Build APIs with Silex
- responsible-service-provider
- silex-skeleton-rest
Thursday, May 23, 13
Push Notifications
Server sends messages to mobile devices
- AppleApnPushBundle
- RMSPushNotificationsBundle
- DABSquaredPushNotificationsBundle
- ZendServiceGoogleGcm
- ZendServiceAppleApns
Mobile Apps - Native Apps
Thursday, May 23, 13
Mobile Apps - Native Apps
RMSPushNotificationsBundle
public function pushAction()
{
$message = new iOSMessage();
$message->setMessage('Oh my! A push notification!');
$message-
>setDeviceIdentifier('test012fasdf482asdfd63f6d7bc6d4293aedd5f
b448fe505eb4asdfef8595a7');
$this->container->get('rms_push_notifications')-
>send($message);
return new Response('Push notification sent!');
}
Thursday, May 23, 13
Mobile Apps - SMS Apps
&
SMS (and voice) Applications
Thursday, May 23, 13
Mobile Apps - SMS Apps
Thursday, May 23, 13
Symfony can send/receive text messages
Common uses:
- Alerts
- Chats
- Electronic payments
- Ads
- Two-factor authentication
Mobile Apps - SMS Apps
Thursday, May 23, 13
SMS Gateway providers:
•Twilio
•Nexmo
•Clickatell
•BulkSMS
Mobile Apps - SMS Apps
Thursday, May 23, 13
Mobile Apps - SMS Apps
VreshTwilioBundle
$twilio = $this->get('twilio.api');
$message = $twilio->account->sms_messages->create(
'9991231234', // From a valid Twilio number
'8881231234', // Text this number
"Hello monkey!"
);
Thursday, May 23, 13
Mobile Apps - Voice Apps
Twilio-php SDK
$client = new Services_Twilio($sid, $token);
$call = $client->account->calls->create(
'9991231234', // From a valid Twilio number
'8881231234', // Call this number
// Read TwiML at this URL when a call connects (hold music)
'http://twimlets.com/holdmusic?
Bucket=com.twilio.music.ambient'
);
Thursday, May 23, 13
MMS are multimedia messages with text,
images, video, audio.
Common uses:
- Photo processing
- Sending/scanning 2D barcodes
Mobile Apps - SMS/MMS Apps
https://github.com/endroid/QrCode
https://github.com/endroid/EndroidQrCodeBundle
https://github.com/mkoppanen/php-zbarcode
Thursday, May 23, 13
Mobile Apps - Hybrid Apps
&
Hybrid Applications
(mix native, web, others)
Thursday, May 23, 13
Applications that combine web, sms,
voice and native aspects
Framework PhoneGap
- Build apps with HTML & JavaScript
- Integrates with XCode
- Compiles app into native code
- Access to accelerometer, camera, geolocation,
notifications and more
Mobile Apps - Hybrid Apps
Thursday, May 23, 13
Questions?
Mobile Apps
Thursday, May 23, 13
Twitter: @pgodel
IRC Freenode: pgodel
Source: https://github.com/pgodel/podisum
Slides: http://slideshare.net/pgodel
Mobile Apps - Thanks!
Feedback Please:
http://joind.in/8675
Thank you!
Thursday, May 23, 13

More Related Content

Viewers also liked

Creacion de aplicaciones moviles con symfony2
Creacion de aplicaciones moviles con symfony2Creacion de aplicaciones moviles con symfony2
Creacion de aplicaciones moviles con symfony2Pablo Godel
 
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)Javier Eguiluz
 
Techniques d'accélération des pages web
Techniques d'accélération des pages webTechniques d'accélération des pages web
Techniques d'accélération des pages webJean-Pierre Vincent
 
Get Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP StreamsGet Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP StreamsDavey Shafik
 
Automation using-phing
Automation using-phingAutomation using-phing
Automation using-phingRajat Pandit
 
Electrify your code with PHP Generators
Electrify your code with PHP GeneratorsElectrify your code with PHP Generators
Electrify your code with PHP GeneratorsMark Baker
 
The quest for global design principles (SymfonyLive Berlin 2015)
The quest for global design principles (SymfonyLive Berlin 2015)The quest for global design principles (SymfonyLive Berlin 2015)
The quest for global design principles (SymfonyLive Berlin 2015)Matthias Noback
 
Top tips my_sql_performance
Top tips my_sql_performanceTop tips my_sql_performance
Top tips my_sql_performanceafup Paris
 
Why elasticsearch rocks!
Why elasticsearch rocks!Why elasticsearch rocks!
Why elasticsearch rocks!tlrx
 
Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015Marcello Duarte
 
Writing infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQLWriting infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQLGabriele Bartolini
 
Si le tdd est mort alors pratiquons une autopsie mix-it 2015
Si le tdd est mort alors pratiquons une autopsie mix-it 2015Si le tdd est mort alors pratiquons une autopsie mix-it 2015
Si le tdd est mort alors pratiquons une autopsie mix-it 2015Bruno Boucard
 
L'ABC du BDD (Behavior Driven Development)
L'ABC du BDD (Behavior Driven Development)L'ABC du BDD (Behavior Driven Development)
L'ABC du BDD (Behavior Driven Development)Arnauld Loyer
 
Performance serveur et apache
Performance serveur et apachePerformance serveur et apache
Performance serveur et apacheafup Paris
 
TDD with PhpSpec - Lone Star PHP 2016
TDD with PhpSpec - Lone Star PHP 2016TDD with PhpSpec - Lone Star PHP 2016
TDD with PhpSpec - Lone Star PHP 2016CiaranMcNulty
 

Viewers also liked (20)

Creacion de aplicaciones moviles con symfony2
Creacion de aplicaciones moviles con symfony2Creacion de aplicaciones moviles con symfony2
Creacion de aplicaciones moviles con symfony2
 
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
 
Diving deep into twig
Diving deep into twigDiving deep into twig
Diving deep into twig
 
Techniques d'accélération des pages web
Techniques d'accélération des pages webTechniques d'accélération des pages web
Techniques d'accélération des pages web
 
Elastic Searching With PHP
Elastic Searching With PHPElastic Searching With PHP
Elastic Searching With PHP
 
Get Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP StreamsGet Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP Streams
 
PHP5.5 is Here
PHP5.5 is HerePHP5.5 is Here
PHP5.5 is Here
 
Automation using-phing
Automation using-phingAutomation using-phing
Automation using-phing
 
Electrify your code with PHP Generators
Electrify your code with PHP GeneratorsElectrify your code with PHP Generators
Electrify your code with PHP Generators
 
The quest for global design principles (SymfonyLive Berlin 2015)
The quest for global design principles (SymfonyLive Berlin 2015)The quest for global design principles (SymfonyLive Berlin 2015)
The quest for global design principles (SymfonyLive Berlin 2015)
 
Mocking Demystified
Mocking DemystifiedMocking Demystified
Mocking Demystified
 
Top tips my_sql_performance
Top tips my_sql_performanceTop tips my_sql_performance
Top tips my_sql_performance
 
Why elasticsearch rocks!
Why elasticsearch rocks!Why elasticsearch rocks!
Why elasticsearch rocks!
 
Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015
 
Writing infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQLWriting infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQL
 
Si le tdd est mort alors pratiquons une autopsie mix-it 2015
Si le tdd est mort alors pratiquons une autopsie mix-it 2015Si le tdd est mort alors pratiquons une autopsie mix-it 2015
Si le tdd est mort alors pratiquons une autopsie mix-it 2015
 
L'ABC du BDD (Behavior Driven Development)
L'ABC du BDD (Behavior Driven Development)L'ABC du BDD (Behavior Driven Development)
L'ABC du BDD (Behavior Driven Development)
 
Performance serveur et apache
Performance serveur et apachePerformance serveur et apache
Performance serveur et apache
 
Caching on the Edge
Caching on the EdgeCaching on the Edge
Caching on the Edge
 
TDD with PhpSpec - Lone Star PHP 2016
TDD with PhpSpec - Lone Star PHP 2016TDD with PhpSpec - Lone Star PHP 2016
TDD with PhpSpec - Lone Star PHP 2016
 

Similar to Creating Mobile Apps With PHP & Symfony2

Ways to Mobilize Your Library
Ways to Mobilize Your LibraryWays to Mobilize Your Library
Ways to Mobilize Your Librarybaldwind1976
 
Web Apps and Responsive Design for Libraries
Web Apps and Responsive Design for LibrariesWeb Apps and Responsive Design for Libraries
Web Apps and Responsive Design for LibrariesMatt Machell
 
2.3 Bryan Stockwell – Mobile Commerce
2.3 Bryan Stockwell – Mobile Commerce2.3 Bryan Stockwell – Mobile Commerce
2.3 Bryan Stockwell – Mobile Commerce118Tracker Ltd
 
Are Websites Optimized for Mobile Devices and Smart TVs ?
Are Websites Optimized for Mobile Devices and Smart TVs ?Are Websites Optimized for Mobile Devices and Smart TVs ?
Are Websites Optimized for Mobile Devices and Smart TVs ?Manos Perakakis
 
Introduction of Mobile applications
Introduction of Mobile applicationsIntroduction of Mobile applications
Introduction of Mobile applicationsAkib B. Momin
 
Mobile Services on a Shoestring
Mobile Services on a ShoestringMobile Services on a Shoestring
Mobile Services on a ShoestringSarah Houghton
 
Selling Faster: Mobile Performance Tips for E-Commerce Websites
Selling Faster: Mobile Performance Tips for E-Commerce WebsitesSelling Faster: Mobile Performance Tips for E-Commerce Websites
Selling Faster: Mobile Performance Tips for E-Commerce WebsitesMobify
 
Going Mobile First: a future-friendly approach to digital product design
Going Mobile First: a future-friendly approach to digital product designGoing Mobile First: a future-friendly approach to digital product design
Going Mobile First: a future-friendly approach to digital product designEzekiel Binion
 
Webapps: introduction and publishing on Firefox OS
Webapps: introduction and publishing on Firefox OSWebapps: introduction and publishing on Firefox OS
Webapps: introduction and publishing on Firefox OSJorge Ferreiro
 
Mobile Game Changers 2013 - The Internet Show & Mobile Show 2013 Presentation
Mobile Game Changers 2013 - The Internet Show & Mobile Show 2013 Presentation Mobile Game Changers 2013 - The Internet Show & Mobile Show 2013 Presentation
Mobile Game Changers 2013 - The Internet Show & Mobile Show 2013 Presentation Ville Kulmala
 
The mobile ecosystem & technological strategies
The mobile ecosystem & technological strategiesThe mobile ecosystem & technological strategies
The mobile ecosystem & technological strategiesIvano Malavolta
 
Smartphones - the ultimate recruitment tool
Smartphones - the ultimate recruitment toolSmartphones - the ultimate recruitment tool
Smartphones - the ultimate recruitment toolThirtyThree
 
Transforming Web Business to a Mobile Business - Presentation by Sirish Kosaraju
Transforming Web Business to a Mobile Business - Presentation by Sirish KosarajuTransforming Web Business to a Mobile Business - Presentation by Sirish Kosaraju
Transforming Web Business to a Mobile Business - Presentation by Sirish KosarajuRapidValue
 
GSA Boston 2011
GSA Boston 2011GSA Boston 2011
GSA Boston 2011Todd McKee
 
jQuery Mobile, Backbone.js, and ASP.NET MVC
jQuery Mobile, Backbone.js, and ASP.NET MVCjQuery Mobile, Backbone.js, and ASP.NET MVC
jQuery Mobile, Backbone.js, and ASP.NET MVCTroy Miles
 
What is your mobile strategy?
What is your mobile strategy?What is your mobile strategy?
What is your mobile strategy?Emily Massey
 
PhoneGap in a Day
PhoneGap in a DayPhoneGap in a Day
PhoneGap in a DayTroy Miles
 
Make a Mobile Web Site
Make a Mobile Web SiteMake a Mobile Web Site
Make a Mobile Web SiteJasmine Sante
 

Similar to Creating Mobile Apps With PHP & Symfony2 (20)

Ways to Mobilize Your Library
Ways to Mobilize Your LibraryWays to Mobilize Your Library
Ways to Mobilize Your Library
 
Web Apps and Responsive Design for Libraries
Web Apps and Responsive Design for LibrariesWeb Apps and Responsive Design for Libraries
Web Apps and Responsive Design for Libraries
 
2.3 Bryan Stockwell – Mobile Commerce
2.3 Bryan Stockwell – Mobile Commerce2.3 Bryan Stockwell – Mobile Commerce
2.3 Bryan Stockwell – Mobile Commerce
 
Are Websites Optimized for Mobile Devices and Smart TVs ?
Are Websites Optimized for Mobile Devices and Smart TVs ?Are Websites Optimized for Mobile Devices and Smart TVs ?
Are Websites Optimized for Mobile Devices and Smart TVs ?
 
Introduction of Mobile applications
Introduction of Mobile applicationsIntroduction of Mobile applications
Introduction of Mobile applications
 
Mobile Services on a Shoestring
Mobile Services on a ShoestringMobile Services on a Shoestring
Mobile Services on a Shoestring
 
Selling Faster: Mobile Performance Tips for E-Commerce Websites
Selling Faster: Mobile Performance Tips for E-Commerce WebsitesSelling Faster: Mobile Performance Tips for E-Commerce Websites
Selling Faster: Mobile Performance Tips for E-Commerce Websites
 
Going Mobile First: a future-friendly approach to digital product design
Going Mobile First: a future-friendly approach to digital product designGoing Mobile First: a future-friendly approach to digital product design
Going Mobile First: a future-friendly approach to digital product design
 
Webapps: introduction and publishing on Firefox OS
Webapps: introduction and publishing on Firefox OSWebapps: introduction and publishing on Firefox OS
Webapps: introduction and publishing on Firefox OS
 
Mobile Game Changers 2013 - The Internet Show & Mobile Show 2013 Presentation
Mobile Game Changers 2013 - The Internet Show & Mobile Show 2013 Presentation Mobile Game Changers 2013 - The Internet Show & Mobile Show 2013 Presentation
Mobile Game Changers 2013 - The Internet Show & Mobile Show 2013 Presentation
 
The mobile ecosystem & technological strategies
The mobile ecosystem & technological strategiesThe mobile ecosystem & technological strategies
The mobile ecosystem & technological strategies
 
Smartphones - the ultimate recruitment tool
Smartphones - the ultimate recruitment toolSmartphones - the ultimate recruitment tool
Smartphones - the ultimate recruitment tool
 
Transforming Web Business to a Mobile Business - Presentation by Sirish Kosaraju
Transforming Web Business to a Mobile Business - Presentation by Sirish KosarajuTransforming Web Business to a Mobile Business - Presentation by Sirish Kosaraju
Transforming Web Business to a Mobile Business - Presentation by Sirish Kosaraju
 
MMA Presentation
MMA PresentationMMA Presentation
MMA Presentation
 
Html5 Apps
Html5 AppsHtml5 Apps
Html5 Apps
 
GSA Boston 2011
GSA Boston 2011GSA Boston 2011
GSA Boston 2011
 
jQuery Mobile, Backbone.js, and ASP.NET MVC
jQuery Mobile, Backbone.js, and ASP.NET MVCjQuery Mobile, Backbone.js, and ASP.NET MVC
jQuery Mobile, Backbone.js, and ASP.NET MVC
 
What is your mobile strategy?
What is your mobile strategy?What is your mobile strategy?
What is your mobile strategy?
 
PhoneGap in a Day
PhoneGap in a DayPhoneGap in a Day
PhoneGap in a Day
 
Make a Mobile Web Site
Make a Mobile Web SiteMake a Mobile Web Site
Make a Mobile Web Site
 

More from Pablo Godel

SymfonyCon Cluj 2017 - Symfony at OpenSky
SymfonyCon Cluj 2017 - Symfony at OpenSkySymfonyCon Cluj 2017 - Symfony at OpenSky
SymfonyCon Cluj 2017 - Symfony at OpenSkyPablo Godel
 
Symfony Live San Francisco 2017 - Symfony @ OpenSky
Symfony Live San Francisco 2017 - Symfony @ OpenSkySymfony Live San Francisco 2017 - Symfony @ OpenSky
Symfony Live San Francisco 2017 - Symfony @ OpenSkyPablo Godel
 
DeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSkyDeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSkyPablo Godel
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.catPablo Godel
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARPablo Godel
 
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 -  Rock Solid Deployment of Symfony AppsSymfony Live NYC 2014 -  Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer ToolboxPablo Godel
 
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...Pablo Godel
 
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balasPHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balasPablo Godel
 
php[architect] Summit Series DevOps 2013 - Rock solid deployment of PHP apps
php[architect] Summit Series DevOps 2013 - Rock solid deployment of PHP appsphp[architect] Summit Series DevOps 2013 - Rock solid deployment of PHP apps
php[architect] Summit Series DevOps 2013 - Rock solid deployment of PHP appsPablo Godel
 
Lone Star PHP 2013 - Sysadmin Skills for PHP Developers
Lone Star PHP 2013 - Sysadmin Skills for PHP DevelopersLone Star PHP 2013 - Sysadmin Skills for PHP Developers
Lone Star PHP 2013 - Sysadmin Skills for PHP DevelopersPablo Godel
 
Lone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New AngleLone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New AnglePablo Godel
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...Pablo Godel
 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSPablo Godel
 
Soflophp 2013 - SysAdmin skills for PHP developers
Soflophp 2013 - SysAdmin skills for PHP developersSoflophp 2013 - SysAdmin skills for PHP developers
Soflophp 2013 - SysAdmin skills for PHP developersPablo Godel
 
Symfony2 and MongoDB - MidwestPHP 2013
Symfony2 and MongoDB - MidwestPHP 2013   Symfony2 and MongoDB - MidwestPHP 2013
Symfony2 and MongoDB - MidwestPHP 2013 Pablo Godel
 
Rock Solid Deployment of Web Applications
Rock Solid Deployment of Web ApplicationsRock Solid Deployment of Web Applications
Rock Solid Deployment of Web ApplicationsPablo Godel
 
Codeworks'12 Rock Solid Deployment of PHP Apps
Codeworks'12 Rock Solid Deployment of PHP AppsCodeworks'12 Rock Solid Deployment of PHP Apps
Codeworks'12 Rock Solid Deployment of PHP AppsPablo Godel
 
PFCongres 2012 - Rock Solid Deployment of PHP Apps
PFCongres 2012 - Rock Solid Deployment of PHP AppsPFCongres 2012 - Rock Solid Deployment of PHP Apps
PFCongres 2012 - Rock Solid Deployment of PHP AppsPablo Godel
 

More from Pablo Godel (20)

SymfonyCon Cluj 2017 - Symfony at OpenSky
SymfonyCon Cluj 2017 - Symfony at OpenSkySymfonyCon Cluj 2017 - Symfony at OpenSky
SymfonyCon Cluj 2017 - Symfony at OpenSky
 
Symfony Live San Francisco 2017 - Symfony @ OpenSky
Symfony Live San Francisco 2017 - Symfony @ OpenSkySymfony Live San Francisco 2017 - Symfony @ OpenSky
Symfony Live San Francisco 2017 - Symfony @ OpenSky
 
DeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSkyDeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSky
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
 
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 -  Rock Solid Deployment of Symfony AppsSymfony Live NYC 2014 -  Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer Toolbox
 
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
 
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balasPHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
 
php[architect] Summit Series DevOps 2013 - Rock solid deployment of PHP apps
php[architect] Summit Series DevOps 2013 - Rock solid deployment of PHP appsphp[architect] Summit Series DevOps 2013 - Rock solid deployment of PHP apps
php[architect] Summit Series DevOps 2013 - Rock solid deployment of PHP apps
 
Lone Star PHP 2013 - Sysadmin Skills for PHP Developers
Lone Star PHP 2013 - Sysadmin Skills for PHP DevelopersLone Star PHP 2013 - Sysadmin Skills for PHP Developers
Lone Star PHP 2013 - Sysadmin Skills for PHP Developers
 
Lone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New AngleLone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New Angle
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJS
 
Soflophp 2013 - SysAdmin skills for PHP developers
Soflophp 2013 - SysAdmin skills for PHP developersSoflophp 2013 - SysAdmin skills for PHP developers
Soflophp 2013 - SysAdmin skills for PHP developers
 
Symfony2 and MongoDB - MidwestPHP 2013
Symfony2 and MongoDB - MidwestPHP 2013   Symfony2 and MongoDB - MidwestPHP 2013
Symfony2 and MongoDB - MidwestPHP 2013
 
Rock Solid Deployment of Web Applications
Rock Solid Deployment of Web ApplicationsRock Solid Deployment of Web Applications
Rock Solid Deployment of Web Applications
 
Codeworks'12 Rock Solid Deployment of PHP Apps
Codeworks'12 Rock Solid Deployment of PHP AppsCodeworks'12 Rock Solid Deployment of PHP Apps
Codeworks'12 Rock Solid Deployment of PHP Apps
 
PFCongres 2012 - Rock Solid Deployment of PHP Apps
PFCongres 2012 - Rock Solid Deployment of PHP AppsPFCongres 2012 - Rock Solid Deployment of PHP Apps
PFCongres 2012 - Rock Solid Deployment of PHP Apps
 

Recently uploaded

Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 

Recently uploaded (20)

Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 

Creating Mobile Apps With PHP & Symfony2

  • 1. Creating Mobile Apps with PHP & Symfony2 Pablo Godel @pgodel http://joind.in/8675 Symfony Live, Portland, May 22 2013 Thursday, May 23, 13
  • 2. ⁃ Born in Argentina, living in the US since 1999 ⁃ PHP & Symfony developer ⁃ Founder of the original PHP mailing list in spanish ⁃ Master of the parrilla ⁃ Co-founder of ServerGrove Who am I?! Thursday, May 23, 13
  • 5. ⁃ Founded ServerGrove Networks in 2005 ⁃ Provider of web hosting specialized in PHP, Symfony, ZendFramework, MongoDB and others ⁃ Servers in USA and Europe! Who am I?! Thursday, May 23, 13
  • 6. ⁃ Very active open source supporter through code contributions and usergroups/conference sponsoring Community is our Teacher Thursday, May 23, 13
  • 7. Why? Mobile Apps - Why Thursday, May 23, 13
  • 8. •More & more people have access to Internet through mobile devices Mobile Apps - Why Thursday, May 23, 13
  • 9. •More & more people have access to Internet through mobile devices •Devices are more powerful & versatile Mobile Apps - Why Thursday, May 23, 13
  • 10. •More & more people have access to Internet through mobile devices •Devices are more powerful & versatile •Internet access is faster and more reliable Mobile Apps - Why Thursday, May 23, 13
  • 11. •More & more people have access to Internet through mobile devices •Devices are more powerful & versatile •Internet access is faster and more reliable •Users demand services and applications on the go at all times Mobile Apps - Why Thursday, May 23, 13
  • 12. •More & more people have access to Internet through mobile devices •Devices are more powerful & versatile •Internet access is faster and more reliable •Users demand services and applications on the go at all times •Don’t give advantages in an ultra-competitive market Mobile Apps - Why Thursday, May 23, 13
  • 13. Some numbers... Mobile Apps - Why Thursday, May 23, 13
  • 14. •Estimated 6.5 billion mobile subscriptions globally (over 90%) Mobile Apps - Why Thursday, May 23, 13
  • 15. •Estimated 6.5 billion mobile subscriptions globally (over 90%) •1.7 billion mobile phones sold in 2012 Mobile Apps - Why Thursday, May 23, 13
  • 16. •Estimated 6.5 billion mobile subscriptions globally (over 90%) •1.7 billion mobile phones sold in 2012 •1 billion users in China alone Mobile Apps - Why Thursday, May 23, 13
  • 17. •Estimated 6.5 billion mobile subscriptions globally (over 90%) •1.7 billion mobile phones sold in 2012 •1 billion users in China alone •321M subscriptions in the US (over 100%) Mobile Apps - Why Thursday, May 23, 13
  • 18. •Estimated 6.5 billion mobile subscriptions globally (over 90%) •1.7 billion mobile phones sold in 2012 •1 billion users in China alone •321M subscriptions in the US (over 100%) •Devices range from phone and tablets to door locks, thermostats, TVs, Cars, etc. Mobile Apps - Why Thursday, May 23, 13
  • 19. How did we get here? Mobile Apps - Why Thursday, May 23, 13
  • 20. Let’s see some history... Mobile Apps - History Thursday, May 23, 13
  • 21. First commercial cellular network launched in Japan )1G - first generation( 1979 Mobile Apps - History Thursday, May 23, 13
  • 22. The “mobile” telephone Motorola DynaTAC - aka “The Boot” cost: US$ 3995 weight:793g / 28 ounces 1983 Motorola DynaTAC Mobile Apps - History Thursday, May 23, 13
  • 23. Common Standard to connect networks and apps •WAP client •Server sends WML (XML) WAP - Wireless Application Protocol <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml" > <wml> <card id="main" title="First Card"> <p mode="wrap">This is a sample WML page.</p> </card> </wml> 1997 Mobile Apps - History Thursday, May 23, 13
  • 24. WAP/WML Mobile Apps - History Thursday, May 23, 13
  • 25. WAP/WML Mobile Apps - History Thursday, May 23, 13
  • 26. WAP/WML Mobile Apps - History Thursday, May 23, 13
  • 27. Developer: WAP/WML Mobile Apps - History Thursday, May 23, 13
  • 28. User: WAP/WML Mobile Apps - History Thursday, May 23, 13
  • 29. 2007... Mobile Apps - History Thursday, May 23, 13
  • 30. •Revolutionized the market of mobile telephony •Safari Web Client iPhone2007 Mobile Apps - History Thursday, May 23, 13
  • 31. iPhone App Store2007 Mobile Apps - History Thursday, May 23, 13
  • 32. First Android Device2008 Mobile Apps - History Thursday, May 23, 13
  • 33. iPad2010 Mobile Apps - History Thursday, May 23, 13
  • 34. So what does all this mean? Mobile Apps - History Thursday, May 23, 13
  • 35. The PC is not dead The Mobile Generation Mobile Apps - History Thursday, May 23, 13
  • 36. The PC is not dead, yet? The Mobile Generation Mobile Apps - History Thursday, May 23, 13
  • 37. Information is now consumed on phones and tablets The Mobile Generation Mobile Apps - History Thursday, May 23, 13
  • 38. And this is just the beginning... The Mobile Generation Mobile Apps - History Thursday, May 23, 13
  • 39. Mobile Apps - Symfony Thursday, May 23, 13
  • 40. Mobile Apps - Symfony Definition by Fabien Potencier: ⁃ Symfony2 is a reusable set of standalone, decoupled, and cohesive PHP components that solve common web development problems. ⁃ Based on these components, Symfony2 is also a full-stack web framework. http://fabien.potencier.org/article/49/what-is-symfony2 Thursday, May 23, 13
  • 42. • DependencyInjection • EventDispatcher • HttpFoundation • DomCrawler • ClassLoader • CssSelector • HttpKernel • BrowserKit • Templating • Translation • Serializer • Validator • Security • Routing • Console • Process • Config • Finder • Locale • Yaml • Form • ... Components: GitHub: http://github.com/symfony Mobile Apps - Symfony Thursday, May 23, 13
  • 43. Mobile Apps - Symfony Silex The PHP/‘Symfony’ micro-framework http://silex.sensiolabs.org/ // web/index.php require_once __DIR__.'/../vendor/autoload.php'; $app = new SilexApplication(); $app->get('/hello/{name}', function ($name) use ($app) { return 'Hello '.$app->escape($name); }); $app->run(); Thursday, May 23, 13
  • 44. Why Symfony? Mobile Apps - Symfony Thursday, May 23, 13
  • 45. •Provides solid base to build good HTTP & RESTful APIs Mobile Apps - Symfony Thursday, May 23, 13
  • 46. •Provides solid base to build good HTTP & RESTful APIs •Twig makes it easy to build templates for mobile devices Mobile Apps - Symfony Thursday, May 23, 13
  • 47. •Provides solid base to build good HTTP & RESTful APIs •Twig makes it easy to build templates for mobile devices •Re-use code for different devices thanks to templates, controllers and routing Mobile Apps - Symfony Thursday, May 23, 13
  • 48. •Provides solid base to build good HTTP & RESTful APIs •Twig makes it easy to build templates for mobile devices •Re-use code for different devices thanks to templates, controllers and routing •Bundles + Composer = Endless possibilities! Mobile Apps - Symfony Thursday, May 23, 13
  • 49. & Mobile Web Applications Mobile Apps - Web Apps Thursday, May 23, 13
  • 50. http://forecast.io Mobile Apps - Web Apps Thursday, May 23, 13
  • 51. Frameworks HTML / Javascript • iui http://code.google.com/p/iui/ (one of the first ones) • JQuery Mobile http://jquerymobile.com/ (Open source) • JQTouch http://jqtouch.com/ (Open source) • DHTMLX Touch http://dhtmlx.com/touch/ (Open source) • The M Project http://www.the-m-project.org/ (Open source) • Sensa Touch http://www.sencha.com/products/touch/ Mobile Apps - Web Apps Thursday, May 23, 13
  • 52. jQuery Mobile Mobile Apps - Web Apps Thursday, May 23, 13
  • 53. Supports: - IOS (iPhone/iPad) - Android - Blackberry - Windows Phone - palm webOS - symbian jQuery Mobile Mobile Apps - Web Apps Thursday, May 23, 13
  • 54. jQuery Mobile Mobile Apps - Web Apps Thursday, May 23, 13
  • 55. •Based on jQuery jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 56. •Based on jQuery •Light (40KB) jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 57. •Based on jQuery •Light (40KB) •HTML5 jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 58. •Based on jQuery •Light (40KB) •HTML5 •Accessible (works on screen readers) jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 59. •Based on jQuery •Light (40KB) •HTML5 •Accessible (works on screen readers) •Events, plugins, themes jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 60. •Based on jQuery •Light (40KB) •HTML5 •Accessible (works on screen readers) •Events, plugins, themes •Lots of documentation jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 61. •Page management jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 62. •Page management •Transitions jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 63. •Page management •Transitions •Dialog windows jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 64. •Page management •Transitions •Dialog windows •Links and buttons jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 65. •Page management •Transitions •Dialog windows •Links and buttons •Navigation bars jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 66. •Page management •Transitions •Dialog windows •Links and buttons •Navigation bars •Header / Footer jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 67. •Page management •Transitions •Dialog windows •Links and buttons •Navigation bars •Header / Footer •Forms jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 68. •Page management •Transitions •Dialog windows •Links and buttons •Navigation bars •Header / Footer •Forms •Lists jQuery Mobile - Features Mobile Apps - Web Apps Thursday, May 23, 13
  • 69. jQuery Mobile - Page management <body> <!-- Start of first page --> <div data-role="page" id="foo"> ! <div data-role="content">! ! ! <p>I'm first in the source order so I'm shown as the page. </p>!! ! ! <p>View internal page called <a href="#bar">bar</a></p>! ! </div><!-- /content --> </div><!-- /page --> </body> Mobile Apps - Web Apps Thursday, May 23, 13
  • 70. <body> <!-- Start of first page --> <div data-role="page" id="foo"> ! <div data-role="content">! ! ! <p>View internal page called <a href="#bar">bar</a></p>! ! </div><!-- /content --> </div><!-- /page --> <!-- Start of second page --> <div data-role="page" id="bar"> ! <div data-role="content">! ! ! <p><a href="#foo">Back to foo</a></p>! ! </div><!-- /content --> </div><!-- /page --> </body> jQuery Mobile - Page management Mobile Apps - Web Apps Thursday, May 23, 13
  • 71. jQuery Mobile - Transitions <a href="foo.html" data-rel="dialog" data-transition="pop">Open dialog</a> <a href="foo.html" data-rel="dialog" data-transition="slidedown">Open dialog</a> <a href="foo.html" data-rel="dialog" data-transition="flip">Open dialog</a> <a href="foo.html" data-rel="dialog" data-transition="fade">Open dialog</a> Mobile Apps - Web Apps Thursday, May 23, 13
  • 72. jQuery Mobile - Dialogs Mobile Apps - Web Apps Thursday, May 23, 13
  • 73. jQuery Mobile - Navigation bars <div data-role="header" data-position="inline"> ! <a href="index.html" data-icon="delete">Cancel</a> ! <h1>Edit Contact</h1> ! <a href="index.html" data-icon="check">Save</a> </div> Mobile Apps - Web Apps Thursday, May 23, 13
  • 74. jQuery Mobile - Forms Mobile Apps - Web Apps Thursday, May 23, 13
  • 75. jQuery Mobile - Forms Mobile Apps - Web Apps Thursday, May 23, 13
  • 76. jQuery Mobile - Lists Mobile Apps - Web Apps Thursday, May 23, 13
  • 77. & jQuery Mobile Mobile Apps - Web Apps Thursday, May 23, 13
  • 78. Templates Mobile Apps - Web Apps Thursday, May 23, 13
  • 79. <!DOCTYPE html> <html> <head> <title>Podisum by ServerGrove</title> <meta name="viewport" content="width=device-width, initial- scale=1"> </head> <body> {% block content %} {% endblock %} </body> </html> layout.html.twig Mobile Apps - Web Apps Thursday, May 23, 13
  • 80. {% extends "layout.html.twig" %} {% block content %} <div data-role="page" id="home"> <div data-role="header"> <h1>Podisum</h1> </div> <div data-role="content"> <1-- ... --> </div> </div> index.html.twig Mobile Apps - Web Apps Thursday, May 23, 13
  • 81. <div data-role="header" data-theme="b"> <h1>{{title}}</h1> <a href="#home" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home" data-ajax="false">Home</a> </div> header.html.twig Mobile Apps - Web Apps Thursday, May 23, 13
  • 82. {% extends "layout.html.twig" %} {% block content %} {% include “header.html.twig’ %} <div data-role="content"> <1-- ... --> </div> </div> index.html.twig Mobile Apps - Web Apps Thursday, May 23, 13
  • 83. Routing Mobile Apps - Web Apps Thursday, May 23, 13
  • 84. home: pattern: / defaults: { _controller: DemoBundle:Default:index } talks: pattern: /talks.{_format} defaults: { _controller: DemoBundle:Talk:index, _format: html } requirements: _format: html|xml|ics talk: pattern: /talk/{slug} defaults: { _controller: DemoBundle:Talk:talk } jQuery Mobile & Symfony / Routing Mobile Apps - Web Apps Thursday, May 23, 13
  • 85. jQuery Mobile & Symfony / Routing home: pattern: /m defaults: { _controller: DemoBundle:Default:index,_format:mhtml } talks: pattern: /m/talks defaults: { _controller: DemoBundle:Talk:index, _format:mhtml } talk: pattern: /m/talk/{slug} defaults: { _controller: DemoBundle:Talk:talk, _format:mhtml } Mobile Apps - Web Apps Thursday, May 23, 13
  • 86. jQuery Mobile & Symfony / Routing (option 2) home: pattern: /m defaults: { _controller: DemoBundle:Default:index, mobile:true } talks: pattern: /m/talks defaults: { _controller: DemoBundle:Talk:index, mobile:true } talk: pattern: /m/talk/{slug} defaults: { _controller: DemoBundle:Talk:talk, mobile:true } Mobile Apps - Web Apps Thursday, May 23, 13
  • 87. m_home: pattern: /m defaults: { _controller: DemoBundle:Mobile:index } jQuery Mobile & Symfony / Routing (option 3) Mobile Apps - Web Apps Thursday, May 23, 13
  • 88. Controllers & Actions Mobile Apps - Web Apps Thursday, May 23, 13
  • 89. jQuery Mobile & Symfony / Controller & Action public function indexAction() { $em = $this->get('doctrine')->getEntityManager(); // ... $format = $this->get('request')->getRequestFormat(); return $this->render('DemoBundle:Default:index.'.$format.'.twig', array( // ... )); } Mobile Apps - Web Apps Thursday, May 23, 13
  • 90. Detect Mobile Devices •http://mobiledetect.net/ •Symfony2 + MobileDetectBundle •Silex + MobileDetectServiceProvider Mobile Apps - Web Apps Thursday, May 23, 13
  • 91. Mobile Apps - Web Apps MobileDetectBundle public function indexAction() { $em = $this->get('doctrine')->getEntityManager(); // ... $mobileDetector = $this->get('mobile_detect.mobile_detector'); $tpl = $mobileDetector->isMobile() ? ‘mhtml’ : ‘html’; return $this->render('DemoBundle:Default:index.'.$tpl.'.twig', array( // ... )); } Thursday, May 23, 13
  • 92. Mobile Apps - Web Apps MobileDetectBundle {% if is_mobile() %} {% if is_tablet() %} {% if is_device('iphone') %} # magic methods is[...] {% extends is_mobile() ? "MyBundle:Layout:mobile.html.twig" : "MyBundle:Layout:full.html.twig" %} Thursday, May 23, 13
  • 93. Mobile Apps - Web Apps MobileDetectBundle mobile_detect: redirect: mobile: is_enabled: true host: http://m.site.com status_code: 301 action: redirect tablet: ~ switch_device_view: ~ Thursday, May 23, 13
  • 94. •Symfony2 functional tests for HTML pages •For AJAX other testing methods may be used: •Selenium RC •Behat Mobile Apps - Web Apps Testing Thursday, May 23, 13
  • 96. Podisum http://github.com/pgodel/podisum •Generates summaries of Logstash events •Silex app •Twig templates •Mobile version Mobile Apps - Web Apps Thursday, May 23, 13
  • 97. Podisum Mobile Apps - Web Apps Thursday, May 23, 13
  • 98. Podisum Apache access_log Logstash Redis Podisum redis-client MongoDB Podisum Silex App Web Client Mobile Apps - Web Apps Thursday, May 23, 13
  • 100. •iPhone - Objective-C •Android - Java •Windows Mobile - .NET •Frameworks multi-platform ⁃ PhoneGap http://phonegap.com ⁃ rhomobile http://rhomobile.com ⁃ Appceledator http://appcelerator.com ⁃ Corona http://anscamobile.com/corona/ Mobile Apps - Native Apps Thursday, May 23, 13
  • 101. Mobile Apps - Native Apps PHP does not run in these devices but native apps need to retrieve and store data from servers. Thursday, May 23, 13
  • 102. Common uses: •send emails & messages in general •loading of profile data •authentication & authorization •chats Mobile Apps - Native Apps PHP does not run in these devices but native apps need to retrieve and store data from servers. Thursday, May 23, 13
  • 103. Some considerations: •Design API (RESTful, HTTP, XML-RPC) early on at the development cycle Mobile Apps - Native Apps Thursday, May 23, 13
  • 104. Some considerations: •Design API (RESTful, HTTP, XML-RPC) early on at the development cycle •APIs can be used by multiple types of clients Mobile Apps - Native Apps Thursday, May 23, 13
  • 105. Some considerations: •Design API (RESTful, HTTP, XML-RPC) early on at the development cycle •APIs can be used by multiple types of clients •Re-use controllers and use _format to generate different content types (XML, JSON, etc) Mobile Apps - Native Apps Thursday, May 23, 13
  • 106. Build APIs with Symfony2 - FOSRestBundle https://packagist.org/packages/friendsofsymfony/rest- bundle - ApiDocBundle https://packagist.org/packages/nelmio/api-doc-bundle Mobile Apps - Native Apps Thursday, May 23, 13
  • 107. Build APIs with Symfony2 - FOSRestBundle https://packagist.org/packages/friendsofsymfony/rest- bundle - ApiDocBundle https://packagist.org/packages/nelmio/api-doc-bundle Mobile Apps - Native Apps Build APIs with Silex - responsible-service-provider - silex-skeleton-rest Thursday, May 23, 13
  • 108. Push Notifications Server sends messages to mobile devices - AppleApnPushBundle - RMSPushNotificationsBundle - DABSquaredPushNotificationsBundle - ZendServiceGoogleGcm - ZendServiceAppleApns Mobile Apps - Native Apps Thursday, May 23, 13
  • 109. Mobile Apps - Native Apps RMSPushNotificationsBundle public function pushAction() { $message = new iOSMessage(); $message->setMessage('Oh my! A push notification!'); $message- >setDeviceIdentifier('test012fasdf482asdfd63f6d7bc6d4293aedd5f b448fe505eb4asdfef8595a7'); $this->container->get('rms_push_notifications')- >send($message); return new Response('Push notification sent!'); } Thursday, May 23, 13
  • 110. Mobile Apps - SMS Apps & SMS (and voice) Applications Thursday, May 23, 13
  • 111. Mobile Apps - SMS Apps Thursday, May 23, 13
  • 112. Symfony can send/receive text messages Common uses: - Alerts - Chats - Electronic payments - Ads - Two-factor authentication Mobile Apps - SMS Apps Thursday, May 23, 13
  • 114. Mobile Apps - SMS Apps VreshTwilioBundle $twilio = $this->get('twilio.api'); $message = $twilio->account->sms_messages->create( '9991231234', // From a valid Twilio number '8881231234', // Text this number "Hello monkey!" ); Thursday, May 23, 13
  • 115. Mobile Apps - Voice Apps Twilio-php SDK $client = new Services_Twilio($sid, $token); $call = $client->account->calls->create( '9991231234', // From a valid Twilio number '8881231234', // Call this number // Read TwiML at this URL when a call connects (hold music) 'http://twimlets.com/holdmusic? Bucket=com.twilio.music.ambient' ); Thursday, May 23, 13
  • 116. MMS are multimedia messages with text, images, video, audio. Common uses: - Photo processing - Sending/scanning 2D barcodes Mobile Apps - SMS/MMS Apps https://github.com/endroid/QrCode https://github.com/endroid/EndroidQrCodeBundle https://github.com/mkoppanen/php-zbarcode Thursday, May 23, 13
  • 117. Mobile Apps - Hybrid Apps & Hybrid Applications (mix native, web, others) Thursday, May 23, 13
  • 118. Applications that combine web, sms, voice and native aspects Framework PhoneGap - Build apps with HTML & JavaScript - Integrates with XCode - Compiles app into native code - Access to accelerometer, camera, geolocation, notifications and more Mobile Apps - Hybrid Apps Thursday, May 23, 13
  • 120. Twitter: @pgodel IRC Freenode: pgodel Source: https://github.com/pgodel/podisum Slides: http://slideshare.net/pgodel Mobile Apps - Thanks! Feedback Please: http://joind.in/8675 Thank you! Thursday, May 23, 13