2017 © Pedro Peláez
 

project system

A full-stack framework system built from Aura library packages.

image

aura/system

A full-stack framework system built from Aura library packages.

  • Tuesday, March 24, 2015
  • by pmjones
  • Repository
  • 7 Watchers
  • 63 Stars
  • 1,079 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 12 Forks
  • 0 Open issues
  • 4 Versions
  • 1 % Grown

The README.md

Aura System

Build Status, (*1)

The Aura System provides a full-stack Aura framework built around Aura library packages., (*2)

Getting Started

Installation

Install via Composer to a {$PROJECT_PATH} of your choosing:, (*3)

composer create-project aura/system {$PROJECT_PATH}

This will create the system skeleton and install all of the necessary packages., (*4)

Once you have installed the Aura system, start the built-in PHP server with an Aura.Framework command:, (*5)

cd {$PROJECT_PATH}
php package/Aura.Framework/cli/server

You can then open a browser and go to http://0.0.0.0:8000 to see the "Hello World!" demo output., (*6)

Press Ctrl-C to stop the built-in PHP server., (*7)

Additionally, you can run a command-line test:, (*8)

cd {$PROJECT_PATH}
php package/Aura.Framework_Demo/cli/hello

You should see "Hello World!" as the output., (*9)

Run The Tests

For testing, you need to have PHPUnit 3.7 or later installed., (*10)

To run the integration tests for the system as a whole, change to the tests directory and issue phpunit:, (*11)

cd {$PROJECT_PATH}/tests
phpunit

To run the unit tests for a package, change to that package's tests directory and issue phpunit:, (*12)

cd {$PROJECT_PATH}/package/Aura.Autoload/tests
phpunit

Web Server

To run Aura under Apache or another web server, add a virtual host to your web server configuration, then point its document root to {$PROJECT_PATH}/web., (*13)

If mod_rewrite or an equivalent module is installed on the server, you will be able to browse without needing index.php in the URL., (*14)

Remove the Demo Package

When you are satisifed that the installation is working, edit the composer.json file to remove the aura/framework-demo package requirement and then run composer update., (*15)

System Organization

The system directory structure is pretty straightforward:, (*16)

{$PROJECT_PATH}/
    config/                     # mode-specific config files
        _mode                   # the config mode to use
        _packages               # load these packages in order
        default.php             # default config
        dev.php                 # shared development server config
        local.php               # local development server config
        prod.php                # production config
        stage.php               # staging config
        test.php                # testing config
    include/                    # application include-path directory
    package/                    # aura-package libraries
    tests/                      # system tests
    tmp/                        # temporary files
    vendor/                     # composer vendors
    web/                        # web server document root
        .htaccess               # mod_rewrite rules
        cache/                  # public cached files
        favicon.ico             # favicon to reduce error_log lines
        index.php               # bootstrap script

Writing A Page Controller

Let's create a package and a page controller, and wire it up for browsing. We will do so in a project-specific way, leaving out the complexities of creating an independent package for distribution., (*17)

Warning: If you have not removed the Framework_Demo package yet, please do so before continuing. Otherwise, your routes will not work correctly., (*18)

Create The Controller

Change to the include/ directory and create a location for the example package and a space for our first web page ..., (*19)

cd {$PROJECT_PATH}/include
mkdir -p Example/Package/Web/Home
cd Example/Package/Web/Home

... then create a file called HomePage.php. Add this code for a bare-bones index action:, (*20)

view = 'index';
    }
}
?>

Create The View

Next, create a view for the index action in a file called views/index.php and add the following code to it, (*21)

<?php echo "This is an example home page."; ?>

At this point your include/ directory should look like this:, (*22)

include/
    Example
        Package/
            Web/
                Home/
                    HomePage.php
                    views/
                        index.php

N.b.: Technically you don't need a directory structure this deep. However, a structure like this makes it easy to add new pages as well as other support libraries without having to change the project organization later., (*23)

Configure The System

Now we need to wire up the page controller to the autoloader and the routing system. Change to the system config directory:, (*24)

$ cd {$PROJECT_PATH}/config

Edit the default.php file and add this code at the end of the file:, (*25)

params['Aura\Router\Map']['attach'][''] = [
    // all routes with the '' path prefix (i.e., no prefix)
    'routes' => [
        // a route named 'home'
        'home' => [
            'path' => '/',
            'values' => [
                'controller' => 'home',
                'action'     => 'index',
            ],
        ],
    ]
];

// map the 'home' controller value to the controller class
$di->params['Aura\Framework\Web\Controller\Factory']['map']['home'] = 'Example\Package\Web\Home\HomePage';
?>

Try It Out

You should now be able to browse to the / URL to see "This is an example home page.", (*26)

The Versions