Beispiel #1
0
 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);
 }
Beispiel #2
0
 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'));
 }
Beispiel #3
0
<?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);
Beispiel #4
0
<?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();
Beispiel #6
0
<?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();
Beispiel #7
0
<?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(', ');
Beispiel #8
0
#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');
Beispiel #9
0
        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: ');
?>
Beispiel #10
0
<?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']);
Beispiel #11
0
 /**
  * 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;
 }