/** * Test the setValue() method * * @return void */ public function testSetValue() { // Get our config $config = new Config(); // Set a simple value and test if it got set $config->setValue('environment', 'testing'); $this->assertEquals('testing', $config->getValue('environment')); // Set a more complex value and test if it got set $config->setValue('autoloader/dirs', array(1, 2, 3)); $this->assertEquals(array(1, 2, 3), $config->getValue('autoloader/dirs')); }
/** * Set upt the test environment */ public function setUp() { $this->dataDirs = array(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'Data'); // get the objects we need $config = new Config(); $config->setValue('autoload/dirs', $this->dataDirs); $config->setValue('enforcement/dirs', array()); $this->structureMap = new StructureMap($config->getValue('autoload/dirs'), $config->getValue('enforcement/dirs'), $config); // fill the map $this->structureMap->fill(); }
/** * Visitor method that adds a initialized class loader to the passed application. * * @param \TechDivision\Application\Interfaces\ApplicationInterface $application The application instance * @param \TechDivision\ApplicationServer\Api\Node\ClassLoaderNodeInterface $configuration The class loader configuration node * * @return void */ public static function visit(ApplicationInterface $application, ClassLoaderNodeInterface $configuration = null) { // load the web application path we want to register the class loader for $webappPath = $application->getWebappPath(); // initialize the class path and the enforcement directories $classPath = array(); $enforcementDirs = array(); // add the possible class path if folder is available foreach ($configuration->getDirectories() as $directory) { if (is_dir($webappPath . $directory->getNodeValue())) { array_push($classPath, $webappPath . $directory->getNodeValue()); if ($directory->isEnforced()) { array_push($enforcementDirs, $webappPath . $directory->getNodeValue()); } } } // initialize the arrays of different omit possibilities $omittedEnforcement = array(); $omittedAutoLoading = array(); // iterate over all namespaces and check if they are omitted in one or the other way foreach ($configuration->getNamespaces() as $namespace) { // is the enforcement omitted for this namespace? if ($namespace->omitEnforcement()) { $omittedEnforcement[] = $namespace->getNodeValue()->__toString(); } // is the autoloading omitted for this namespace? if ($namespace->omitAutoLoading()) { $omittedAutoLoading[] = $namespace->getNodeValue()->__toString(); } } // initialize the class loader configuration $config = new Config(); // set the environment mode we want to use $config->setValue('environment', $configuration->getEnvironment()); // set the cache directory $config->setValue('cache/dir', $application->getCacheDir()); // set the default autoloader values $config->setValue('autoloader/dirs', $classPath); // collect the omitted namespaces (if any) $config->setValue('autoloader/omit', $omittedAutoLoading); $config->setValue('enforcement/omit', $omittedEnforcement); // set the default enforcement configuration values $config->setValue('enforcement/dirs', $enforcementDirs); $config->setValue('enforcement/enforce-default-type-safety', $configuration->getTypeSafety()); $config->setValue('enforcement/processing', $configuration->getProcessing()); $config->setValue('enforcement/level', $configuration->getEnforcementLevel()); $config->setValue('enforcement/logger', $application->getInitialContext()->getSystemLogger()); // create the autoloader instance and fill the structure map $autoLoader = new self($config); // add the class loader instance to the application $application->addClassLoader($autoLoader); }