function testController_ActionNotNull() { $locator = new A_Locator(); $base_path = ''; $default_action = null; $mapper = new A_Controller_Mapper($base_path, $default_action); $locator->set('Mapper', $mapper); $Controller_Action = new A_Controller_Action($locator); $result = true; $this->assertTrue($result); $this->assertFalse(!$result); }
function testLocatorGetLoadDI() { $locator = new A_Locator(); $config = new A_Collection(array('foo' => 'The value of foo.')); $locator->set('Config', $config); // load a class $inject = array('Example1' => array(), 'Example2' => array('__construct' => array(0 => array('A_Locator' => 'get', 'name' => 'Example1', 'class' => 'Example1')), 'setBoth' => array(0 => array('A_Locator' => 'container', 'name' => 'Config', 'class' => '', 'key' => 'foo'), 1 => array('type' => 'string', 'value' => 'Hello world.')))); $locator->register($inject); $example3 = $locator->get('example', 'Example2'); #dump($example3); // check if class directly loaded exists $this->assertTrue(class_exists('Example2')); // check if dependent class exists $this->assertTrue(class_exists('Example1')); // is object the correct type $this->assertTrue(is_a($example3, 'Example2')); $example4 = $example3->getArgs(); // get constructor args injected inot Example2 $this->assertTrue(is_a($example4, 'Example1')); }
<?php /** * This is the simplest bootstrap and controller. * No Response object is used and controllers echo their output. * URLs are in the form index.php?module=&controller=home&action=index (but params are defaults so not necessary) */ $ConfigArray['PATH'] = dirname(__FILE__) . '/'; include $ConfigArray['PATH'] . '../../A/Locator.php'; $Locator = new A_Locator(); $Locator->autoload(); $Request = new A_Http_Request(); $Locator->set('Request', $Request); $Front = new A_Controller_Front($ConfigArray['PATH'], array('', 'home', ''), array('', 'home', '')); $Front->run($Locator);
<?php require_once 'config.php'; require_once dirname(__FILE__) . '/../../A/Locator.php'; #require_once('A/Http/Request.php'); #require_once('A/Http/Response.php'); $Locator = new A_Locator(); $Locator->autoload(); #$Response = new A_Http_Response(); $Locator->set('Request', new A_Http_Request()); #$Locator->set('Response', $Response); require_once 'controllers/Form1.php'; $Controller = new Form1(); $Controller->index($Locator); #$Response->out();
* Search files * Upload files * View files * Edit files * Rename files * Delete files * Download files * Define root directory, user cannot 'break out' of it * Sorting up and down, by name, size, type and modification date * Move files (cut/copy/paste functionality) * Create and delete folders * Create text files * User Interface supports language packs. You can easily create your own. Available languages in the download: english and german. */ ini_set('error_reporting', E_ALL); include '../../A/Locator.php'; $basedir = $_SERVER['DOCUMENT_ROOT']; $maxlength = 20; $Locator = new A_Locator(); $Locator->autoload(); $Request = new A_Http_Request(); $Response = new A_Http_Response(); $Response->setTemplate('mainlayout.php'); $Locator->set('Request', $Request); $Locator->set('Response', $Response); // put clean URL values into Request $Pathinfo = new A_Http_Pathinfo(); $Pathinfo->run($Request); $Front = new A_Controller_Front('', array('', 'filemgr', '')); $Front->run($Locator); echo $Response->render();
<?php require_once 'config.php'; require_once dirname(__FILE__) . '/../../A/Locator.php'; #require_once('A/Http/Request.php'); #require_once('A/Http/Response.php'); $Locator = new A_Locator(); $Locator->autoload(); $Response = new A_Http_Response(); $Locator->set('Request', new A_Http_Request()); $Locator->set('Response', $Response); require_once 'controllers/Form4.php'; $Controller = new Form4($Locator); $Controller->index($Locator); $Response->out();
<?php require 'config.php'; require $ConfigArray['LIB'] . 'A/Locator.php'; $Locator = new A_Locator(); $Locator->autoload(); // initializing autoloading $Config = new A_Collection($ConfigArray); $Request = new A_Http_Request(); $Response = new A_Http_Response(); $Response->setTemplate('layouts/main.php'); $Response->set('BASE', $ConfigArray['BASE']); $Response->set('title', $ConfigArray['TITLE']); $Response->set('head', ''); $Session = new A_Session(); $UserSession = new A_User_Session($Session); $Locator->set('Config', $Config); $Locator->set('Request', $Request); $Locator->set('Response', $Response); $Locator->set('Session', $Session); $Locator->set('UserSession', $UserSession); $Router = new A_Http_Pathinfo(); $Router->run($Request); $Mapper = new A_Controller_Mapper($ConfigArray['APP'], array('', 'home', '')); $Controller = new A_Controller_Front($Mapper, array('', 'error', '')); $Controller->addPreFilter(new A_User_Prefilter_Group($Session, array('', 'user', 'login'))); $Controller->run($Locator); $Response->run($Locator); echo $Response->render(); echo $Controller->getErrorMsg(', ');
#require_once 'A/DataContainer.php'; #require_once 'A/Session.php'; #require_once 'A/Locator.php'; #require_once 'A/Http/Request.php'; #require_once 'A/Http/Response.php'; #require_once 'A/Http/Pathinfo.php'; #require_once 'A/Controller/Front.php'; #require_once 'A/Controller/Mapper.php'; #require_once 'A/Template/Strreplace.php'; $Locator = new A_Locator(); $Locator->autoload(); // initialize autoloading $Request = new A_Http_Request(); $Response = new A_Http_Response(); $Session = new A_Session(); $Locator->set('Config', new A_Collection($ConfigArray)); $Locator->set('Request', $Request); $Locator->set('Response', $Response); $Locator->set('Session', $Session); $Mapper = new A_Http_Pathinfo(array('' => array('controller', 'action', 'id'))); // array('' => array('class', 'method'))); $Mapper->run($Request); // copies clean URL values into the Request based on the map $Action = array('', 'home', 'index'); $Mapper = new A_Controller_Mapper($ConfigArray['APP'], $Action); // action controllers in default 'controller' directory #$Mapper->setDefaultMethod('execute'); // uncomment to make compatable with pre 0.4.x $Controller = new A_Controller_Front($Mapper, $Action); $Controller->run($Locator); if (!$Response->hasRenderer()) { $Template = new A_Template_Strreplace($ConfigArray['APP'] . 'templates/main.html');
echo "CALL FUNCTION setDb()<br/>\n"; $this->db = $db; } } class FooModel extends BaseModel { } class BarModel extends BaseModel { } // create a config object to show how injected data can come from a registered container $ConfigObj = new Config(); $ConfigObj->set('db', $config['db']); // create Locator which is Registry + Loader + DI $locator = new A_Locator(); $locator->set('Config', $ConfigObj); // register dependency for database connector to inject config array into contructor // future calls to $locator->get('', 'A_Db_Pdo') will pass array to constructor when instantiating $locator->register(array('A_Db_Pdo' => array('__construct' => array(array('A_Locator' => 'container', 'name' => 'Config', 'class' => '', 'key' => 'db'))))); // register dependencies for classes that will have A_Db_Pdo object injected // Note that A_Db_Pdo object is put in Registry with name 'DB' so later call will just get object from Registry $locator->register(array('BaseModel' => array('__construct' => array(array('A_Locator' => 'get', 'name' => 'DB', 'class' => 'A_Db_Pdo')), 'set' => array('base', 'Data injected into set(base, )')), 'FooModel' => array('__construct' => array(array('A_Locator' => 'get', 'name' => 'DB', 'class' => 'A_Db_Pdo'))), 'BarModel' => array('set' => array('bar', 'Data injected into set(bar, )'), 'setDb' => array(array('A_Locator' => 'get', 'name' => 'DB', 'class' => 'A_Db_Pdo'))))); ?> <html> <body> <?php $FooModel = $locator->get('', 'FooModel', 'BaseModel'); dump($FooModel, 'FooModel: '); $BarModel = $locator->get('', 'BarModel'); dump($BarModel, 'BarModel: '); ?>
<?php /** * This is a simple socket server setup for WebSockets */ $ConfigArray = array('PATH' => dirname(__FILE__) . '/', 'APP' => dirname(__FILE__) . '/app', 'SOCKET' => array('host' => 'localhost', 'port' => '9091', 'class-client' => 'A_Socket_Client_Websocket', 'class-message' => 'A_Socket_Message_Json', 'message-connect' => '{"type":{"module":"","controller":"connect","action":"user"},"data":null}', 'message-disconnect' => '{"type":{"module":"","controller":"disconnect","action":"user"},"data":null}'), 'DEFAULT_ACTION' => array('', 'main', 'main'), 'ERROR_ACTION' => array('', 'main', 'main')); include $ConfigArray['PATH'] . '../../A/Locator.php'; $Locator = new A_Locator(); $Locator->autoload(); $Config = new A_Config_Php(); $Config->import($ConfigArray); $Locator->set('Config', $Config); $EventListener = new A_Socket_Eventlistener_Frontcontroller($Locator); $EventManager = new A_Event_Manager(); $EventManager->addEventListener($EventListener); $Server = new A_Socket_Server($EventManager); $Server->run($ConfigArray['SOCKET']);
/** * Start dispatch process * * @param A_Locator $locator * @return string */ public function run($locator = null) { if (!$locator) { $locator = new A_Locator(); } if (!$locator->has('Request')) { $locator->set('Request', new A_Http_Request()); } if ($locator->has('Response')) { // make sure that Response has Locator set so it can use loading and DI $locator->get('Response')->setLocator($locator); } $mapper = $this->getMapper(); $locator->set('Mapper', $mapper); // set mapper in registry for mvc loader to use $this->locator = $locator; $route = $mapper->getRoute($locator->get('Request')); $error_route = $this->errorRoute; $n = -1; while ($route) { $error = self::NO_ERROR; $mapper->setRoute($route); // set dir/class/method $n++; $class = $mapper->getFormattedClass(); $method = $mapper->getFormattedMethod(); $dir = $mapper->getPath(); $this->routeHistory[] = $route; // save history of routes $route = null; $result = $locator->loadClass($class, $dir); if ($locator->isError()) { $this->errorMsg = array_merge($this->errorMsg, $locator->getErrorMsg()); } if ($result) { $class = str_replace('-', '_', $class); $controller = new $class($locator); $this->controllerHistory[] = $controller; // save history of controller if ($this->preFilters) { // run pre filtes and check if forward $change_route = $this->runFilters($controller, $this->preFilters); if ($change_route !== null) { // if filter forwarded then set new route and reloop for mapping $route = $change_route; continue; } } if (method_exists($controller, $this->dispatchMethod)) { $route = $controller->{$this->dispatchMethod}($locator, $method); } else { if (method_exists($controller, $method)) { $route = $controller->{$method}($locator); } else { $method = $mapper->getDefaultMethod(); if (method_exists($controller, $method)) { $route = $controller->{$method}($locator); } else { $error = self::NO_METHOD . ': ' . $method; // no known method to dispatch } } } if ($this->postFilters) { $change_route = $this->runFilters($controller, $this->postFilters); if ($change_route !== null) { // if filter forwarded then set route to loop again $route = $change_route; } } } elseif ($error_route) { $route = $error_route; $error_route = null; $error = self::NO_CLASS . ": {$class}. Using error route: " . (is_array($route) ? implode('/', $route) : $route) . '.'; // cannot load class and not error route } elseif ($n == 0) { $error = self::NO_CLASS . ": {$class}."; // cannot load class and not error route } if ($error) { $this->errorMsg[] = $error; } } return $error; }