A set of libraries allow easy install wizard support for applications using the Enchilada Libraries 3.x
Requirements
- Enchilada Core Libraries
- PHP 5.3+
Tortilla Configuration Framework Example
Load required libraries:
<?php include 'EnchiladaLibrary.class.php'; include 'Configurable.class.php'; include 'SimpleConfiguration.class.php';?>
Design Your Configurable Object
Design your configurable entity by extending the 'Configurable' class
<?php class Connection extends Configurable { }?>
List the 'required' configuration options as a comma separated list in a static variable named "Parameters".
<?php class Connection extends Configurable { protected static $Parameters = 'HOST,PORT,USER,PASS'; }?>
Setup corresponding private/protected variables. Note: Future versions of this framework will do this for you. For now
You have to do it your self.
<?phpclass Connection extends Configurable { protected static $Parameters = 'HOST,PORT,USER,PASS'; protected $HOST; protected $PORT; protected $USER; protected $PASS; public function Open() { echo "Connecting to: {$this->HOST}:{$this->PORT} using {$this->USER}:{$this->PASS}"; }}?>
Automatically Generate a Configuration for your Object
Create a new SimpleConfiguration by passing your configuration's class name:
<?php $config = new SimpleConfiguration('Connection');?>
The configuration options for your object can be obtained as an associative array. Note that the options are
automatically prefixed with your class name.
<?php $options = $config->ListOptions(); print_r($options);?>
Array
(
[CONNECTION_HOST] =>
[CONNECTION_PORT] =>
[CONNECTION_USER] =>
[CONNECTION_PASS] =>
)
You can setup the options all at once:
<?php $options['CONNECTION_HOST'] = 'host.domain.tld'; $options['CONNECTION_USER'] = 'pperson'; $options['CONNECTION_PORT'] = '21'; $config->Save($options);?>
A simple validation feature is included to ensure all required parameters are set
<?php // Returns an array containing missing options $missing_options = $config->Validate(); print_r($missing_options);?>
Array
(
[CONNECTION_PASS] =>
)
Options can even be set and accessed directly:
<?php $config->CONNECTION_PASS = '1234'; echo $config->CONNECTION_PASS;?>
1234
Get the currently set options:
<?php // Returns an array with current options $current_options = $config->Load();?>
Applying a Configuration to your Object
Create an instance of your object and apply the configuration:
<?php $my_connection = new Connection(); $my_connection->setConfiguration($config);?>
Your object is now automatically configured for usage:
<?php $my_connection->Open();?>
Connecting to: host.domain.tld:21 using pperson:1234
Tortilla Installation Framework Example
Take things to the next level with the Installation framework. First load the required library:
<?php include 'SimpleInstaller.class.php';?>
Install a Configuration
Create a new installer object by specifying the location of the configuration file it can read/write to:
<?php $installer = new SimpleInstaller('config.inc.php');?>
Save your object's options to persistent storage by 'installing' a configuration file:
<?php $installer->writeConfiguration($config);?>
What you should end up with is a new file with the following content:
<?phpdefine("CONNECTION_HOST", "host.domain.tld");define("CONNECTION_PORT", "21");define("CONNECTION_USER", "pperson");define("CONNECTION_PASS", "1234");?>
Put it all together
With the Tortilla Installation and Configuration Framework you can load a configuration file
with the required options in order to properly run your application. Here is a full example:
<?php $app_installer = new SimpleInstaller('config.inc.php'); $app_config = new SimpleConfiguration('Connection'); $app_connection = new Connection(); $app_config->Save($app_installer->readConfiguration()); $app_connection->setConfiguration($app_config); $app_connection->Open();?>
Connecting to: host.domain.tld:21 using pperson:1234
Where to get it
The latest version of these libraries can be found on GitHub