SLIDE 1 PHP and Rich Internet Applications
Mike Potter http://www.riapedia.com/ mike.potter@adobe.com
SLIDE 2
Fast Easy
SLIDE 3 <?php if (!$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) { echo 'Could not connect to mysql'; exit; } if (!mysql_select_db('mysql_dbname', $link)) { echo 'Could not select database'; exit; } $sql = 'SELECT foo FROM bar WHERE id = 42'; $result = mysql_query($sql, $link); if (!$result) { echo "DB Error, could not query the database\n"; echo 'MySQL Error: ' . mysql_error(); exit; } mysql_free_result($result); return($result); ?>
SLIDE 4 function PMA_getSearchSqls($table, $search_str, $search_option) { global $err_url, $charset_connection; // Statement types $sqlstr_select = 'SELECT'; $sqlstr_delete = 'DELETE'; // Fields to select $res = PMA_DBI_query('SHOW ' . (PMA_MYSQL_INT_VERSION >= 40100 ? 'FULL ' : '') . 'FIELDS FROM ' . PMA_backquote($table) . ' FROM ' . PMA_backquote($GLOBALS['db']) . ';'); while ($current = PMA_DBI_fetch_assoc($res)) { if (PMA_MYSQL_INT_VERSION >= 40100) { list($current['Charset']) = explode('_', $current['Collation']); } $current['Field'] = PMA_backquote($current['Field']); $tblfields[] = $current; } // while PMA_DBI_free_result($res); unset($current, $res); $tblfields_cnt = count($tblfields); // Table to use $sqlstr_from = ' FROM ' . PMA_backquote($GLOBALS['db']) . '.' . PMA_backquote($table); // Beginning of WHERE clause $sqlstr_where = ' WHERE'; $search_words = (($search_option > 2) ? array($search_str) : explode(' ', $search_str)); $search_wds_cnt = count($search_words); $like_or_regex = (($search_option == 4) ? 'REGEXP' : 'LIKE'); $automatic_wildcard = (($search_option <3) ? '%' : ''); for ($i = 0; $i < $search_wds_cnt; $i++) { // Eliminates empty values // In MySQL 4.1, if a field has no collation we get NULL in Charset // but in MySQL 5.0.x we get '' if (!empty($search_words[$i])) { for ($j = 0; $j < $tblfields_cnt; $j++) { if (PMA_MYSQL_INT_VERSION >= 40100 && $tblfields[$j]['Charset'] != $charset_connection && $tblfields[$j]['Charset'] != 'NULL' && $tblfields[$j]['Charset'] != '') { $prefix = 'CONVERT(_utf8 '; $suffix = ' USING ' . $tblfields[$j]['Charset'] . ') COLLATE ' . $tblfields[$j]['Collation']; } else { $prefix = $suffix = ''; } $thefieldlikevalue[] = $tblfields[$j]['Field'] . ' ' . $like_or_regex . ' '
SLIDE 5
SLIDE 7
SLIDE 8 RIA Characteristics
- Full applications
- Could replace desktop apps
- Applications, not web pages
SLIDE 9
SLIDE 10
SLIDE 11
What’s in it for me? for my employer?
SLIDE 12 Rich Internet Applications are the next evolution of the web.
“ ”
Source: Gartner Research, May 11, 2005
SLIDE 13
Builds on existing skills and knowledge
SLIDE 14
$
SLIDE 15
Saved ~160 GB in 3 hrs
SLIDE 16
User experience matters
SLIDE 17 Client Options
- Ajax (In Browser)
- Java (Sun)
- XUL (Mozilla)
- XAML (Microsoft)
- MXML (Adobe Flex)
SLIDE 18
Ajax Examples
SLIDE 19
XUL Examples
SLIDE 20 XUL Examples
Songbird
SLIDE 21
XAML Examples
SLIDE 22
SLIDE 23
SLIDE 24
SLIDE 25
SLIDE 26 To Think About
- Reach - How many people will view this
application? What platform will they be on? Is it an open or closed platform?
- Rich - Can I integrate rich content easily,
like video, audio and animations?
- Tools - What will I use to build this
application? How will I debug?
SLIDE 27 PHP and RIAs
- Read in XML from a PHP backend (REST)
SLIDE 28 REST with PHP
<?php //connect to the database mysql_connect ... //get the data mysql_query( “SELECT * from recipes”); ... //transform into XML print “<recipes><recipe id=’1’ name=’cake’/><recipe id=’2’ name=’hotdog’/></recipes>”; ?>
SLIDE 29
SLIDE 30
SLIDE 31 PHP and RIAs
- Transfer PHP objects to the client directly
- JSON - JavaScript Object Notation
- AMF - ActionScript Messaging Format
SLIDE 32
JSON and PHP
SLIDE 33
SLIDE 34
SLIDE 35
SLIDE 36
SLIDE 37 Flex with AMFPHP
<?php //connect to the database mysql_connect ... //get the data $ResultObject = mysql_query( “SELECT * from recipes”); ... return( mysql_fetch_object( $ResultObject ) ); ?>
SLIDE 38
How to make money?
SLIDE 39
How to make money?
SLIDE 40 Recap
- Build PHP apps as services that can be used
by any front end - Ajax, XAML, Flex etc...
- Rich clients and components allow you to
simplify your PHP code
SLIDE 41
What’s next?
SLIDE 42 Web Compiler for Flex Applications
- http://labs.adobe.com
- Allows you to create MXML, ActionScript,
upload to the server and compile there, similar to developing PHP applications
SLIDE 43
SLIDE 44
- Offline / Occasionally Connected
- Applications can run in background
- Network
- HTTP
- XML-RPC / SOAP / Rest based web services
- Binary and XML sockets
- File I/O
- Local storage / Settings API
- Custom Chrome
- Shape
- Alpha
Apollo enables...
SLIDE 45
SLIDE 46
SLIDE 47
THANK YOU!