Actions

Difference between revisions of "How to create a stand-alone application using the Joomla! Platform"

From Joomla! Documentation

(Example 2: Drawing cool things in the Terminal Screen)
m
Line 163: Line 163:
 
}
 
}
  
protected function fetchConfigurationData()
 
{
 
    return array();
 
}
 
 
}
 
}
  

Revision as of 23:50, 17 March 2012

Contents

How to Build Your First Joomla Platform Application

This article will allow you to create your first Joomla Platform application, following a step-by-step process outlined below. We’ll assume you’re in an environment that has access to PHP (Mac OS X has this by default), and that you’ve got a connection to the Internet to download the platform project.

Step 1: Download the latest Joomla Platform

Simply point your Web browser to http://github.com/joomla/joomla-platform and then click on the “Downloads” button. In the pop-up window that appears, click on either the “Download .tar.gz” button or the “Download .zip” button, depending on your preference.

Step 2: Extract the Joomla Platform in your own environment

After you’ve downloaded the file, extract it in the location of your choosing.

Step 3: Create a new file

Create a folder named ‘examples’ within the root directory where you extracted the Joomla Platform. Using your favorite text/code editor, copy/paste code from the following examples (one at a time) into a new file. (Name the file as: ‘helloworld.php‘ or other name that you prefer).

Step 4: Execute your application from the command line interface (CLI)

Using your favorite CLI (maybe Terminal on the Mac, or PuTTy on Windows), navigate to the ‘examples’ folder where you saved your file. Type “php helloword.php” (or whatever you named your file) and click the enter key on your keyboard.

Step 5: Read the result on your screen, savor the moment

Step 6: Tweet your success

Tell the world that you just made your first successful Joomla Platform app by tweeting the following: “OMG, I just wrote a #jplatform app! #joomla”

Step 7: Add to the collection

Add your application to the example collection at Platform Examples


Problems? Check Platform Tips and Tricks

Examples

Example 1: Hello World Command Line Interface (CLI) App

<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__));
 
require_once ( '../libraries/import.php' );
jimport( 'joomla.application.cli' );
 
class HelloWorld extends JCli
{
 
public function execute( )
    {
       $this->out( 'Hello World' );
    }
}
 
JCli::getInstance( 'HelloWorld' )->execute( );
?>

Example 2: Drawing cool things in the Terminal Screen

<?php
define( '_JEXEC', 1 );
 
require_once ( '../libraries/import.php' );
jimport( 'joomla.application.cli' );
 
class JoomlaRocks extends JCli
{
 
public function execute( )
    {
       $this->out( '   .           .     .__       |      | ' );
       $this->out( '   | _  _ ._ _ | _.  [__) _  _.|_/ __ | ' );
       $this->out( '\__|(_)(_)[ | )|(_]  |  \(_)(_.| \_)  * ' );
    }
}
 
JCli::getInstance( 'JoomlaRocks' )->execute( );
?>

Example 3: Hello World using a var to save your name

<?php
define('_JEXEC', 1);
 
require_once '../libraries/import.php';
 
jimport('joomla.application.cli');
 
class HelloYou extends JCli
{
    public function execute()
    {
       $this->out('What is your name?');
       $name = $this->in();
 
       $this->out();
       $this->out('Hi '.$name.',');
       $this->out('Welcome to the Joomla Platform!');
       $this->out();
    }
 
    /**
    * We don’t really need configuration for this application.
    *
    * @return  void
    */
    protected function fetchConfigurationData()
    {
       return array();
    }
}
 
JCli::getInstance('HelloYou')->execute();

Example 4: Get your recent Tweets

<?php
 
define('_JEXEC', 1);
 
require_once '../libraries/import.php';
 
jimport('joomla.application.cli');
 
class TwitterFeed extends JCli
{
 
        //Get Latest Tweet
        function latest_tweet( $username, $count = 5 )
        {
        $url = "http://twitter.com/statuses/user_timeline/$username.xml?count=$count";
 
        $xml = simplexml_load_file( $url ) or die( "could not connect" );
 
        $text = '';      
        foreach( $xml->status as $status )
        {
                $text .= $status->text . '
 
';
        }
 
        return $text;
        }
 
 
        public function execute()
        {
 
        $this->out( 'What is your twitter handle?' );
        $username = $this->in( );
 
        $this->out( 'How many tweets to view?' );
        $count = $this->in( );
 
        $tweet = $this->latest_tweet( $username, $count );
        $this->out( $tweet );
        }
 
}
 
JCli::getInstance('TwitterFeed')->execute();

Building a Web Application on the Platform

Copyedit.png
This Article Needs Your Help

This article is tagged because it NEEDS REVIEW. You can help the Joomla! Documentation Wiki by contributing to it.
More pages that need help similar to this one are here. NOTE-If you feel the need is satistified, please remove this notice.


These instructions will allow you to create a minimal web application that does not use a database.

Problems? Check Platform Tips and Tricks

Download the latest version of the Joomla! platform from github.

Create an index.php file in the root with the following starting code:

if (file_exists(dirname(__FILE__) . '/defines.php'))
{
        include_once dirname(__FILE__) . '/defines.php';
}
 
// Define some things. Doing it here instead of a file because this 
// is a super simple application.
define('JPATH_BASE', dirname(__FILE__));
define('JPATH_PLATFORM', JPATH_BASE . '/libraries');
define('JPATH_MYWEBAPP',JPATH_BASE);
 
// Usually this will be in the framework.php file in the 
// includes folder.
require_once JPATH_PLATFORM.'/import.php';
 
// Now that you have it, use jimport to get the specific packages your application needs.
jimport('joomla.environment.uri');
jimport('joomla.utilities.date');
 
//It's an application, so let's get the application helper. 
jimport('joomla.application.helper'); 
$client = new stdClass;
$client->name = 'mywebapp';
$client->path = JPATH_MYWEBAPP;
 
JApplicationHelper::addClientInfo($client);
 
// Instantiate the application.
// We're setting session to false because we aren't using a database 
// so there is no where to store it.
$config = Array ('session'=>false);
 
$app = JFactory::getApplication('mywebapp', $config);
 
// Render the application. This is just the name of a method you 
// create in your application.php
$app->render();

Now create an application.php file.

/**
 * @copyright   Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved.
 * @license             GNU General Public License version 2 or later; see LICENSE.txt
 */
 
// no direct access
defined('JPATH_PLATFORM') or die;
 
/**
 * Joomla! Application class
 *
 * Provide many supporting API functions
 *
 * @package             Joomla.MyWebApp
 * @subpackage  Application
 */
final class JMyWebApp extends JApplication
{
 
        /**
         * Display the application.
         */
        public function render()
        {
                echo '<h1>My Web Application</h1>';
 
                echo 'The current URL is '.JUri::current().'<br/>';
                echo 'The date is '. JFactory::getDate('now');
 
        } 
}

The application.php file should go into the includes folder. If you browse to the web page you should see the heading followed by the two sentences, including the url and the date.