Flex, Adobe AIR,
    and PHP:
    the beginning of a
                                                                         Replace with
    beautiful friendship                                                  a graphic
                                                                         White Master
                                                                      5.5” Tall & 4.3” Wide

    Mihai Corlan
    Platform Evangelist, Adobe
    PHP GeekMeet 2009, Cluj



                                                                                              ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   1
About me


•     Platform Evangelist, member of the Adobe’s European team

•     Used to be a Flex Builder engineer (Java Desktop SWT, Eclipse
      Platform)

•     Used to be a web developer (PHP, ColdFusion, DHTML, JS, MySQL,
      Sybase…)

•     ~9 years experience with web related technologies

•     I write articles, I do presentations, and I code



                                                                       ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   2
Today’s Agenda


•     What is RIA and why RIA is a good thing

•     What is Flex

•     What is Adobe AIR

•     Why AIR applications?

•     Flex/AIR and PHP

•     Q&A




                                                                      ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   3
What matters?




               Experience Matters!


                                                                      ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   4
What matters?




                      USER
               Experience Matters!


                                                                      ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   5
A shoe story…

                                                                  More than 2.000 years experience in
                                                                  producing shoes.
                                                                  We can produce them really cheap.
                                                                  20 Euro a pair, maybe?




                                                                                                        ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.         6
A shoe story…

                                                                  More than 2.000 years experience in
                                                                  producing shoes.
                                                                  We can produce them really cheap.
                                                                  20 Euro a pair, maybe?




                                                                  Wrong! Because of better user experience,
                                                                  people women are willing to pay 100+ euro!


                                                                  Better design, limited edition = better user
                                                                  experience = greater value


                                                                                                                 ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.          7
What is RIA?



Global
                                                                                 2004
                                                                                          RICH INTERNET
                                       WEB APPLICATIONS                                   APPLICATIONS
  REACH




                                                                          1998




                                                                   1992
Local
                                             MAINFRAME                                      CLIENT/SERVER



                                                Text UI                       RICH      Integrated media GUI
                                                                                                               ®




 Copyright 2009 Adobe Systems Incorporated. All rights reserved.          8
Demos time!

Let’s see what it can be done with the Flash Platform!




                                            Flash Player


                                                                      ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   9
What is Flex?

     Flex is just another way to create a Flash application




                                            Flash Player


                                                                       ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   10
What is Flex?

         Flex SDK                                                          Flex SDK
               MXML                      ActionScript
                                                                                 2 languages
                     Flex Class Library
                                                                                       MXML
                             Debuggers
                                                                                       ActionScript 3
                                                                                 Compilers
                                                                                 Rich Component Library
                                                                                 Debuggers




                                                                                                           ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   11
What is Flex?

         Flex SDK                                                          Flex SDK
               MXML                      ActionScript
                                                                                 2 languages
                     Flex Class Library
                                                                                       MXML
                             Debuggers
                                                                                       ActionScript 3
                     Flex Builder IDE
                                                                                 Compilers
                                                                                 Rich Component Library
                                                                                 Debuggers

                                                                         Flex Builder IDE
                                                                              Eclipse Plug-in or turn-key install
                                                                              Accelerates Design and
                                                                               Development
                                                                              Design view and code view
                                            Flash Player


                                                                                                                     ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   12
What is Flex?

         Flex SDK                                                          Flex SDK
               MXML                      ActionScript
                                                                                 2 languages
                     Flex Class Library
                                                                                       MXML
                             Debuggers
                                                                                       ActionScript 3
                     Flex Builder IDE
                                                                                 Compilers
                          Compile                                                Rich Component Library
                                                                                 Debuggers

                                                                         Flex Builder IDE
                                                                              Eclipse Plug-in or turn-key install
                                                                              Accelerates Design and
                                            Browser                            Development
                                                                              Design view and code view
                                            Flash Player


                                                                                                                     ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   13
What is AIR?




                Adobe® AIR™ lets developers use their
            existing web development skills in HTML,
  AJAX, Flash and Flex to build and deploy rich
                           Internet applications to the desktop
                                              on Windows, Mac or Linux.



                                                                          ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   14
Adobe AIR Application Stack


                        HTML                                                     Flash
                                                                                                                Cross-OS
            HTML                                                            Flex                                Application
            JavaScript                                       Flash          ActionScript            HTML        Integrated
            XML                                                             XML                                 Rendering
            CSS                                                             Audio
                                                                                                                Integrated DOMs
                                                             PDF            Video                   PDF
                                                                                                                & Scripting



          File System Network                                             Application Drag and   Local
          Access      Detection
                                                          Notifications
                                                                          Update      Drop       Database
                                                                                                          ...   Adobe AIR APIs


                                                                  Mac, Windows, Linux & Device OS



                                                                                                                                  ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.                      15
RIAs can be limited by the browser




                                                                       ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   16
#1 – No offline access




                                                                       ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   17
#2 – Constrained within the browser chrome




                                                                  Browser chrome &
                                                                  application chrome
                                                                  con ict




                                                                                       ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   18
#3 – Common desktop interactions not possible




                    Drag & drop
                    not possible




                                                                       ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   19
#4 – Local system access limited




                                                                       File interaction
                                                                       restricted by browser
                                                                       sandbox




                                                                                               ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   20
#5 – Updates only delivered when browser is open




                                                                  Alerts only visible
                                                                  when browser open




                                                                                        ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.      21
Why RIAs on the desktop

                                   Persistent connection                  Branded experiences




  Desktop functionality                                           Data access           Efficient development




                                                                                                                ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.      22
AIR capabilities

•     Native window types (normal, utility, lightweight)

•     Support for multiple monitors

•     Native Menu support (App, window, dock, system tray, context)

•     Full access to the local le system (read/create/delete)

•     Encrypted Local Storage

•     Local SQLite databases, including encrypted

•     Drag and Drop

•     Clipboard (read/write)

•     Network activity monitor

                                                                       ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   23
Communication between Flex and PHP server

“I think this is the beginning of a beautiful friendship!”


                                                                  Flex & AIR on the client, PHP on the server.


                                                                     REST Services
                          Web browser
                          FLEX Apps

                                                                      Web Services             Server
                                                                                                PHP

                                Desktop
                                AIR Apps                               Remoting



                                                                                                                 ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.            24
Are there any Flex/AIR apps with PHP out there?


AIR & Flex apps with PHP backend:

http://corlan.org/ exair-and-php-apps/




                                                                       ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   25
What tools to use?


For Flex and PHP and Eclipse based solution:

•     Flex Builder + PDT

•     Flex Builder + Zend Studio



Advantages:

•     You can create combined Flex and PHP or AIR and PHP projects

•     That helps you with deploying, and debugging


                                                                       ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   26
Debugging


Debugging Flex applications:

1.          Use a log function on the server, and save the var_dump of the PHP
            variables in a at le

2.          Use Charles proxy sniffer, you can inspect the traffic between client
            and server

3.          Use Flex Builder and Zend Studio debuggers




                                                                                 ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   27
How does remoting work?

       Flex/AIR Client                                            AMF3        PHP Server


                                                                         MyClass {

                                                                         getData() { … }
                                                                         saveData($myVO) {…}

                                                                         }




                                                                                               ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.     28
How does remoting work?

       Flex/AIR Client                                                 AMF3                 PHP Server


    RemoteObject                                                  Client calls         MyClass {
                                                                  MyClass->getData()
    getData();                                                                         getData() { … }
    saveData(myVO);                                                                    saveData($myVO) {…}

                                                                                       }




                                                                                                             ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.            29
How does remoting work?

        Flex/AIR Client                                                AMF3                   PHP Server


    RemoteObject                                                  Client calls           MyClass {
                                                                  MyClass->getData()
    getData();                                                                           getData() { … }
    saveData(myVO);                                                                      saveData($myVO) {…}

                                                                                         }



    MyVO {                                                                               MyVO {

    public var id:int;                                            Automatic conversion   public $id;
    public var name:String;                                       between PHP and        public $name;
                                                                  ActionScript class
    }                                                                                    }


                                                                                                               ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.            30
How does remoting work?

        Flex/AIR Client                                                    AMF3                    PHP Server


    RemoteObject                                                      Client calls            MyClass {
                                                                      MyClass->getData()
    getData();                                                                                getData() { … }
    saveData(myVO);                                                   Server sends an array   saveData($myVO) {…}
                                                                      of MyVO objects
                                                                  Client calls                }
                                                                  RemoteObject.saveData(myVO)
                                                                  MyClass->saveData($myVO)

    MyVO {                                                                                    MyVO {

    public var id:int;                                                Automatic conversion    public $id;
    public var name:String;                                           between PHP and         public $name;
                                                                      ActionScript class
    }                                                                                         }


                                                                                                                    ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.                31
REST vs. AMF?

http://www.jamesward.com/census/




                                                                       ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   32
PHP and AMF


There are four libraries for doing remoting with PHP classes:
1.         Zend AMF – part of the Zend Framework
2.         AMFPHP
3.         WebORB for PHP (remoting and data messaging – publisher/
           subscriber)
4.         SabreAMF




                                                                       ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.   33
Thank you!

Download Flex Builder: http://www.adobe.com/go/flex_trial
AIR: http://www.adobe.com/go/air
AIR Adobe Developer Center: http://www.adobe.com/devnet/air/
Download Tour de Flex: http://flex.org/tour
Learn Flex in one week: http://www.adobe.com/devnet/flex/videotraining/



                                                                     Mihai Corlan
                                                                  Blog: http://corlan.org
                                                            E-mail: mihai.corlan@adobe.com




                                                                                             ®




Copyright 2009 Adobe Systems Incorporated. All rights reserved.             34

Flex, Adobe AIR, and PHP: the beginning of a beautiful friendship

  • 1.
    Flex, Adobe AIR, and PHP: the beginning of a Replace with beautiful friendship a graphic White Master 5.5” Tall & 4.3” Wide Mihai Corlan Platform Evangelist, Adobe PHP GeekMeet 2009, Cluj ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 1
  • 2.
    About me •  Platform Evangelist, member of the Adobe’s European team •  Used to be a Flex Builder engineer (Java Desktop SWT, Eclipse Platform) •  Used to be a web developer (PHP, ColdFusion, DHTML, JS, MySQL, Sybase…) •  ~9 years experience with web related technologies •  I write articles, I do presentations, and I code ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 2
  • 3.
    Today’s Agenda •  What is RIA and why RIA is a good thing •  What is Flex •  What is Adobe AIR •  Why AIR applications? •  Flex/AIR and PHP •  Q&A ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 3
  • 4.
    What matters? Experience Matters! ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 4
  • 5.
    What matters? USER Experience Matters! ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 5
  • 6.
    A shoe story… More than 2.000 years experience in producing shoes. We can produce them really cheap. 20 Euro a pair, maybe? ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 6
  • 7.
    A shoe story… More than 2.000 years experience in producing shoes. We can produce them really cheap. 20 Euro a pair, maybe? Wrong! Because of better user experience, people women are willing to pay 100+ euro! Better design, limited edition = better user experience = greater value ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 7
  • 8.
    What is RIA? Global 2004 RICH INTERNET WEB APPLICATIONS APPLICATIONS REACH 1998 1992 Local MAINFRAME CLIENT/SERVER Text UI RICH Integrated media GUI ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 8
  • 9.
    Demos time! Let’s seewhat it can be done with the Flash Platform! Flash Player ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 9
  • 10.
    What is Flex?   Flex is just another way to create a Flash application Flash Player ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 10
  • 11.
    What is Flex? Flex SDK   Flex SDK MXML ActionScript   2 languages Flex Class Library   MXML Debuggers   ActionScript 3   Compilers   Rich Component Library   Debuggers ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 11
  • 12.
    What is Flex? Flex SDK   Flex SDK MXML ActionScript   2 languages Flex Class Library   MXML Debuggers   ActionScript 3 Flex Builder IDE   Compilers   Rich Component Library   Debuggers   Flex Builder IDE   Eclipse Plug-in or turn-key install   Accelerates Design and Development   Design view and code view Flash Player ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 12
  • 13.
    What is Flex? Flex SDK   Flex SDK MXML ActionScript   2 languages Flex Class Library   MXML Debuggers   ActionScript 3 Flex Builder IDE   Compilers Compile   Rich Component Library   Debuggers   Flex Builder IDE   Eclipse Plug-in or turn-key install   Accelerates Design and Browser Development   Design view and code view Flash Player ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 13
  • 14.
    What is AIR? Adobe® AIR™ lets developers use their existing web development skills in HTML, AJAX, Flash and Flex to build and deploy rich Internet applications to the desktop on Windows, Mac or Linux. ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 14
  • 15.
    Adobe AIR ApplicationStack HTML Flash Cross-OS HTML Flex Application JavaScript Flash ActionScript HTML Integrated XML XML Rendering CSS Audio Integrated DOMs PDF Video PDF & Scripting File System Network Application Drag and Local Access Detection Notifications Update Drop Database ... Adobe AIR APIs Mac, Windows, Linux & Device OS ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 15
  • 16.
    RIAs can belimited by the browser ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 16
  • 17.
    #1 – Nooffline access ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 17
  • 18.
    #2 – Constrainedwithin the browser chrome Browser chrome & application chrome con ict ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 18
  • 19.
    #3 – Commondesktop interactions not possible Drag & drop not possible ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 19
  • 20.
    #4 – Localsystem access limited File interaction restricted by browser sandbox ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 20
  • 21.
    #5 – Updatesonly delivered when browser is open Alerts only visible when browser open ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 21
  • 22.
    Why RIAs onthe desktop Persistent connection Branded experiences Desktop functionality Data access Efficient development ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 22
  • 23.
    AIR capabilities •  Native window types (normal, utility, lightweight) •  Support for multiple monitors •  Native Menu support (App, window, dock, system tray, context) •  Full access to the local le system (read/create/delete) •  Encrypted Local Storage •  Local SQLite databases, including encrypted •  Drag and Drop •  Clipboard (read/write) •  Network activity monitor ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 23
  • 24.
    Communication between Flexand PHP server “I think this is the beginning of a beautiful friendship!” Flex & AIR on the client, PHP on the server. REST Services Web browser FLEX Apps Web Services Server PHP Desktop AIR Apps Remoting ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 24
  • 25.
    Are there anyFlex/AIR apps with PHP out there? AIR & Flex apps with PHP backend: http://corlan.org/ exair-and-php-apps/ ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 25
  • 26.
    What tools touse? For Flex and PHP and Eclipse based solution: •  Flex Builder + PDT •  Flex Builder + Zend Studio Advantages: •  You can create combined Flex and PHP or AIR and PHP projects •  That helps you with deploying, and debugging ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 26
  • 27.
    Debugging Debugging Flex applications: 1.  Use a log function on the server, and save the var_dump of the PHP variables in a at le 2.  Use Charles proxy sniffer, you can inspect the traffic between client and server 3.  Use Flex Builder and Zend Studio debuggers ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 27
  • 28.
    How does remotingwork? Flex/AIR Client AMF3 PHP Server MyClass { getData() { … } saveData($myVO) {…} } ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 28
  • 29.
    How does remotingwork? Flex/AIR Client AMF3 PHP Server RemoteObject Client calls MyClass { MyClass->getData() getData(); getData() { … } saveData(myVO); saveData($myVO) {…} } ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 29
  • 30.
    How does remotingwork? Flex/AIR Client AMF3 PHP Server RemoteObject Client calls MyClass { MyClass->getData() getData(); getData() { … } saveData(myVO); saveData($myVO) {…} } MyVO { MyVO { public var id:int; Automatic conversion public $id; public var name:String; between PHP and public $name; ActionScript class } } ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 30
  • 31.
    How does remotingwork? Flex/AIR Client AMF3 PHP Server RemoteObject Client calls MyClass { MyClass->getData() getData(); getData() { … } saveData(myVO); Server sends an array saveData($myVO) {…} of MyVO objects Client calls } RemoteObject.saveData(myVO) MyClass->saveData($myVO) MyVO { MyVO { public var id:int; Automatic conversion public $id; public var name:String; between PHP and public $name; ActionScript class } } ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 31
  • 32.
    REST vs. AMF? http://www.jamesward.com/census/ ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 32
  • 33.
    PHP and AMF Thereare four libraries for doing remoting with PHP classes: 1.  Zend AMF – part of the Zend Framework 2.  AMFPHP 3.  WebORB for PHP (remoting and data messaging – publisher/ subscriber) 4.  SabreAMF ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 33
  • 34.
    Thank you! Download FlexBuilder: http://www.adobe.com/go/flex_trial AIR: http://www.adobe.com/go/air AIR Adobe Developer Center: http://www.adobe.com/devnet/air/ Download Tour de Flex: http://flex.org/tour Learn Flex in one week: http://www.adobe.com/devnet/flex/videotraining/ Mihai Corlan Blog: http://corlan.org E-mail: mihai.corlan@adobe.com ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. 34