| 
<?php
 require_once('../../Features/Configuration.php');
 
 use Falcraft\Features;
 
 class ConfiguredClass {
 use Features\Configuration;
 
 public function __construct($configure)
 {
 $this->configure($configure);
 }
 
 public function getChildNode1()
 {
 return $this->conf->parentNode->childNode1;
 }
 
 public function getChildNode2()
 {
 return $this->conf->parentNode->childNode2;
 }
 
 public function getSingleNode()
 {
 return $this->conf->singleNode;
 }
 
 public function getTestHost($branch)
 {
 return $this->conf->$branch->database->params->host;
 }
 
 public function getTestDBName($branch)
 {
 return $this->conf->$branch->database->params->dbname;
 }
 }
 
 echo "Falcraft\\Features\\Configuration.php Test\n";
 echo "----------------------------------------\n\n";
 
 echo "Instantiating Configuration Class With No Args -> ";
 
 $success = true;
 
 try {
 $configuredObject = new ConfiguredClass(array());
 } catch (\Exception $e) {
 $success = false;
 }
 
 if ($success) {
 echo "Success!\n";
 } else {
 echo "Failure...\n";
 }
 
 echo "Instantiating Configuration Class with Array -> ";
 
 $success = true;
 
 try {
 $configuredObject = new ConfiguredClass(array (
 'parentNode' => array(
 'childNode1' => 'data1',
 'childNode2' => 'data2',),
 'singleNode' => 'data3'));
 } catch (\Exception $e) {
 $success = false;
 }
 
 if ($success) {
 echo "Success!\n";
 } else {
 echo "Failure...\n";
 }
 
 echo "    Checking Configuration Variables -> \n";
 
 $success = true;
 
 $childNode1 = $childNode2 = $singleNode = null;
 
 try {
 $childNode1 = $configuredObject->getChildNode1();
 $childNode2 = $configuredObject->getChildNode2();
 $singleNode = $configuredObject->getSingleNode();
 if (!$childNode1 || !$childNode2 || !$singleNode) {
 $success = false;
 }
 } catch (\Exception $e) {
 $success = false;
 }
 
 if ($success) {
 echo "        childNode1: $childNode1\n";
 echo "        childNode2: $childNode2\n";
 echo "        singleNode: $singleNode -- Success!\n";
 } else {
 echo "        -- Failure!\n";
 }
 
 echo "Instantiating Configuration Class with Ini File -> \n";
 
 $success = true;
 
 $childNode1 = $childNode2 = $singleNode = null;
 
 try {
 $configuredObject = new ConfiguredClass(array());
 $configuredObject->configure(__DIR__ . '/test.ini');
 $childNode1 = $configuredObject->getChildNode1();
 $childNode2 = $configuredObject->getChildNode2();
 $singleNode = $configuredObject->getSingleNode();
 if (!$childNode1 || !$childNode2 || !$singleNode) {
 $success = false;
 }
 } catch (\Exception $e) {
 $success = false;
 }
 
 echo "    Checking Configuration Variables -> \n";
 
 if ($success) {
 echo "        childNode1: $childNode1\n";
 echo "        childNode2: $childNode2\n";
 echo "        singleNode: $singleNode -- Success!\n";
 } else {
 echo "        -- Failure!\n";
 }
 
 echo "Instantiating Configuration Class with XML File -> \n";
 
 $success = true;
 
 $testHostStaging = $testDBNameStaging = null;
 $testHostProduction = null;
 
 try {
 $configuredObject = new ConfiguredClass(array());
 $configuredObject->configure(__DIR__ . '/test.xml');
 $testHostStaging = $configuredObject->getTestHost('staging');
 $testDBNameStaging = $configuredObject->getTestDBName('staging');
 $testHostProduction = $configuredObject->getTestHost('production');
 } catch (\Exception $e) {
 $success = false;
 }
 
 echo "    Checking Configuration Variables -> \n";
 
 if ($success) {
 echo "        testHostStaging: $testHostStaging\n";
 echo "        testDBNameStaging: $testDBNameStaging\n";
 echo "        testHostProduction: $testHostProduction -- Success!\n\n";
 } else {
 echo "        -- Failure!\n\n";
 }
 
 echo "-- NOTE!  testDBNameStaging may be empty, Zend may not be 'extending' properly\n\n";
 
 echo "Instantiating Configuration Class with JSON File -> \n";
 
 $success = true;
 
 $testHostStaging = $testDBNameStaging = null;
 $testHostProduction = null;
 
 //try {
 $configuredObject = new ConfiguredClass(array());
 $configuredObject->configure(__DIR__ . '/test.json');
 
 $testHostStaging = $configuredObject->getTestHost('staging');
 $testDBNameStaging = $configuredObject->getTestDBName('staging');
 $testHostProduction = $configuredObject->getTestHost('production');
 //} catch (\Exception $e) {
 //    $success = false;
 //}
 
 echo "    Checking Configuration Variables -> \n";
 
 if ($success) {
 echo "        testHostStaging: $testHostStaging\n";
 echo "        testDBNameStaging: $testDBNameStaging\n";
 echo "        testHostProduction: $testHostProduction -- Success!\n\n";
 } else {
 echo "        -- Failure!\n\n";
 }
 
 echo "-- NOTE!  testDBNameStaging may be empty, Zend may not be 'extending' properly\n\n";
 
 
 |