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
              
.png)