SlideShare a Scribd company logo
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 symfony2
Pablo 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
 
Diving deep into twig
Diving deep into twigDiving deep into twig
Diving deep into twig
Matthias Noback
 
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
Jean-Pierre Vincent
 
Elastic Searching With PHP
Elastic Searching With PHPElastic Searching With PHP
Elastic Searching With PHP
Lea Hänsenberger
 
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
Davey Shafik
 
PHP5.5 is Here
PHP5.5 is HerePHP5.5 is Here
PHP5.5 is Here
julien pauli
 
Automation using-phing
Automation using-phingAutomation using-phing
Automation using-phing
Rajat Pandit
 
Electrify your code with PHP Generators
Electrify your code with PHP GeneratorsElectrify your code with PHP Generators
Electrify your code with PHP Generators
Mark 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
 
Mocking Demystified
Mocking DemystifiedMocking Demystified
Mocking Demystified
Marcello Duarte
 
Top tips my_sql_performance
Top tips my_sql_performanceTop tips my_sql_performance
Top tips my_sql_performance
afup Paris
 
Why elasticsearch rocks!
Why elasticsearch rocks!Why elasticsearch rocks!
Why elasticsearch rocks!tlrx
 
Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015
Marcello 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 PostgreSQL
Gabriele 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 2015
Bruno 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 apache
afup Paris
 
Caching on the Edge
Caching on the EdgeCaching on the Edge
Caching on the Edge
Fabien Potencier
 
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
CiaranMcNulty
 

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 Library
baldwind1976
 
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
Matt Machell
 
2.3 Bryan Stockwell – Mobile Commerce
2.3 Bryan Stockwell – Mobile Commerce2.3 Bryan Stockwell – Mobile Commerce
2.3 Bryan Stockwell – Mobile Commerce
118Tracker 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 applications
Akib B. Momin
 
Mobile Services on a Shoestring
Mobile Services on a ShoestringMobile Services on a Shoestring
Mobile Services on a Shoestring
Sarah 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 Websites
Mobify
 
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
Ezekiel 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 OS
Jorge 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 strategies
Ivano Malavolta
 
Smartphones - the ultimate recruitment tool
Smartphones - the ultimate recruitment toolSmartphones - the ultimate recruitment tool
Smartphones - the ultimate recruitment tool
ThirtyThree
 
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
RapidValue
 
MMA Presentation
MMA PresentationMMA Presentation
MMA Presentation
Craig Sullivan
 
Html5 Apps
Html5 AppsHtml5 Apps
Html5 Apps
Nikolai Onken
 
GSA Boston 2011
GSA Boston 2011GSA Boston 2011
GSA Boston 2011
Todd 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 MVC
Troy 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 Day
Troy Miles
 
Make a Mobile Web Site
Make a Mobile Web SiteMake a Mobile Web Site
Make a Mobile Web Site
Jasmine 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 OpenSky
Pablo 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 @ OpenSky
Pablo Godel
 
DeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSkyDeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSky
Pablo Godel
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
Pablo 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 Apps
Pablo 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 PHPConferenceAR
Pablo 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 Apps
Pablo Godel
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer Toolbox
Pablo 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 balas
Pablo 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 apps
Pablo 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 Developers
Pablo 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 Angle
Pablo 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 AngularJS
Pablo 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 developers
Pablo 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 Applications
Pablo 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 Apps
Pablo 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 Apps
Pablo 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

Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 

Recently uploaded (20)

Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 

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