Desktop Apps with PHP and Titanium
-
Upload
ben-ramsey -
Category
Technology
-
view
23.036 -
download
2
description
Transcript of Desktop Apps with PHP and Titanium
Desktop Apps with PHP and Titanium
Ben RamseyTEK·X • May 19, 2010
Hi, I’m [email protected]/1576
DISCLAIMER:
I’m not a salesman & I don’t work for Appcelerator.
DISCLAIMER:
I helped with the initial embedding of PHP in Titanium.
What is Titanium?
Four main parts of Titanium apps
• The html/css/javascript code that makes up the core application logic and UI
• The APIs that access native device/desktop functionality, analytics or other modular functionality
• The language-OS bridge that compiles web code into native application code
• The run-time shell that packages the application for cross-platform distribution
Contrasting with AIR...
• Titanium is released under an open source license
• Titanium provides access to native controls
• Titanium applications are packaged for a target system: Windows, OS X, Linux
Who is Appcelerator?
Appcelerator’s role
• Developed and own’s Titanium source
• Licenses Titanium under Apache license
• Support, training, and consulting
• Analytics and tracking
• Infrastructure for building and packaging releases of your apps in the cloud
How Appcelerator makes money...
So, why PHP on Titanium?
• Titanium already had modules to support Python and Ruby development
• PHP was on their roadmap
• PHP is a natural scripting complement to other web technologies
• It was cool and fun to do
• I can now build desktop apps with PHP without using PHP-GTK (no offense to the maintainers of PHP-GTK)
Using Titanium Developer
• Fill out your application details
• Click “Create Project”
• Click the “Test & Package” tab
• Click the “Launch App” button
Now, you have code!
Installation on Linux
• There is a known issue with the GTK libraries for Titanium Developer on Linux
• Until there is a fix, do this after installing Titanium Developer:
• cd ~/.titanium/runtime/linux/1.0.0
• rm libgobject* libgthread* libglib* libgio*
“Hello, World.”
<html><head> <title>Hello, World!</title></head><body> <h1>Hello, World!</h1></body></html>
var mainMenu = Titanium.UI.createMenu();mainMenu.appendItem(Titanium.UI.createMenuItem("File")); var menu = Titanium.UI.createMenu();menu.appendItem(Titanium.UI.createMenuItem("Quit", function() { if (confirm("Are you sure you want to quit?")) { Titanium.App.exit(); }}));mainMenu.getItemAt(0).setSubmenu(menu);
Titanium.UI.currentWindow.menu = mainMenu;
Titanium provides APIs...
• API
• Analytics
• App
• Codec
• Database
• Desktop
• Filesystem
• JSON
• Media
• Network
• Notification
• Platform
• Process
• UI
• UpdateManager
• Worker
Drop in external libraries
Accessing these APIs and libraries
• JavaScript
• Python
• Ruby
• PHP
PHP in Titanium
<script type="text/php"> // PHP code goes here</script>
<script type="text/javascript"> var heading = document.getElementById("title"); heading.innerHTML = "Hello, World!";</script>
JavaScript
<script type="text/php"> $heading = $document->getElementById("title"); $heading->innerHTML = "Hello, World!";</script>
PHP
phpinfo()
<html><head> <title>PHP Info</title> <script type="text/php"> date_default_timezone_set('America/Chicago'); ini_set('default_charset', 'utf8'); ini_set('display_errors', 'Off'); function getPhpInfo() { ob_start(); phpinfo(); return ob_get_clean(); } </script></head><body style="background-color: white; padding: 10px;"> <script type="text/php"> $document->write('<pre>' . getPhpInfo() . '</pre>'); </script></body></html>
PHP caveats
• echo does not work as expected
• Titanium state transitions (links) do not send requests
• Pre-processed scripts (.php) are processed at compile/build time
• Cannot inject classes defined in .php into runtime code with include/require
Are some of these bugs?
Maybe.
Planet PHP Demo
Wrapping up...
• Titanium allows web developers the ability to create desktop apps
• It builds native applications that you can distribute for a particular OS
• You can combine PHP with JavaScript (and Python and Ruby) to leverage the best of each language
• Still some bugs to iron out, but that’s why they need lots of people using it
Questions?
Thank you!
Ben [email protected]/1576
www.appcelerator.comdeveloper.appcelerator.com#titanium_app on Freenode IRC