示例#1
1
 * https://github.com/rdlowrey/Auryn.
 *
 * @author James Byrne <*****@*****.**>
 */
$injector = new \Auryn\Injector();
/**
 * Every time the type-hint of 1st argument is found inject an 
 * instance of second argument.
 */
$injector->alias('Jay\\System\\Template', 'Jay\\System\\Template\\TwigRenderer');
$injector->alias('Jay\\System\\Adapter', 'Jay\\System\\Database\\PDOAdapter');
/**
 * Share the same instance across application
 */
$injector->share('Symfony\\Component\\HttpFoundation\\Request');
$injector->share('Symfony\\Component\\HttpFoundation\\Response');
/**
 * The below dependencies have construct parameters that are scalar
 * or non-object. These arguments are defined below. Some parameter 
 * names can be prefixed with : as by default, Auryn assumes all 
 * paramter names are classes - prefixing with : removes this behaviour. 
 */
$injector->define('Symfony\\Component\\HttpFoundation\\Request', [$_GET, $_POST, array(), $_COOKIE, $_FILES, $_SERVER]);
$injector->define('PDO', ["mysql:host={$config['host']};dbname={$config['database']};charset{$config['charset']}", $config['username'], $config['password']]);
// delegates
$injector->delegate('Twig_Environment', function () use($injector) {
    $loader = new Twig_Loader_Filesystem(dirname(__DIR__) . '/src/views');
    $twig = new Twig_Environment($loader);
    return $twig;
});
return $injector;
<?php

$injector = new \Auryn\Injector();
$injector->alias('Http\\Response', 'Http\\HttpResponse');
$injector->share('Http\\HttpResponse');
$injector->alias('Http\\Request', 'Http\\HttpRequest');
$injector->share('Http\\HttpRequest');
$injector->define('Http\\HttpRequest', [':get' => $_GET, ':post' => $_POST, ':cookies' => $_COOKIE, ':files' => $_FILES, ':server' => $_SERVER]);
$injector->alias('TechTest\\People\\People', 'TechTest\\People\\JsonPeople');
$injector->share('TechTest\\People\\JsonPeople');
$injector->alias('TechTest\\Csrf\\Csrf', 'TechTest\\Csrf\\SessionCsrf');
$injector->share('TechTest\\Csrf\\SessionCsrf');
$injector->alias('TechTest\\Template\\Renderer', 'TechTest\\Template\\PhpRenderer');
return $injector;
 public function setUp()
 {
     $cacheFactory = function () {
         $cacheDriver = new \Stash\Driver\FileSystem();
         return new \Stash\Pool($cacheDriver);
     };
     $injector = new Auryn\Injector();
     $injector->delegate('Pool', $cacheFactory);
     $injector->define('APG\\Fleet\\Fleet', [':airline' => 'AFA', ':path' => 'tests/test_files']);
     $this->fleet = $injector->make('APG\\Fleet\\Fleet');
     $this->aircraftCollection = new \APG\Fleet\Collections\AircraftCollection();
 }
<?php

$injector = new \Auryn\Injector();
//注入http处理类
$injector->alias('Http\\Request', 'Http\\HttpRequest');
$injector->share('Http\\HttpRequest');
$injector->define('Http\\HttpRequest', [':get' => $_GET, ':post' => $_POST, ':cookies' => $_COOKIE, ':files' => $_FILES, ':server' => $_SERVER]);
$injector->alias('Http\\Response', 'Http\\HttpResponse');
$injector->share('Http\\HttpResponse');
//注入模板引擎类(MustacheRenderer)
$injector->alias('My\\Template\\Renderer', 'My\\Template\\MustacheRenderer');
$injector->define('Mustache_Engine', [':options' => ['loader' => new Mustache_Loader_FilesystemLoader(dirname(__DIR__) . '/templates', ['extension' => '.html'])]]);
//注入filepagereader类
$injector->define('My\\Page\\FilePageReader', [':pageFolder' => __DIR__ . '/../pages']);
$injector->alias('My\\Page\\PageReader', 'My\\Page\\FilePageReader');
$injector->share('My\\Page\\FilePageReader');
//注入模板引擎类(Twig)
$injector->alias('My\\Template\\Renderer', 'My\\Template\\TwigRenderer');
$injector->delegate('Twig_Environment', function () use($injector) {
    $loader = new Twig_Loader_Filesystem(dirname(__DIR__) . '/templates');
    $twig = new Twig_Environment($loader);
    return $twig;
});
//依赖于renderer
$injector->alias('My\\Template\\FrontendRenderer', 'My\\Template\\FrontendTwigRenderer');
//menu interface
$injector->alias('My\\Menu\\MenuReader', 'My\\Menu\\ArrayMenuReader');
$injector->share('My\\Menu\\ArrayMenuReader');
$injector->alias('My\\User\\user', 'My\\User\\adminUser');
$injector->share('My\\User\\adminUser');
return $injector;
示例#5
0
<?php

$injector = new \Auryn\Injector();
// Http request and response
$injector->share('Symfony\\Component\\HttpFoundation\\Request');
$injector->define('Symfony\\Component\\HttpFoundation\\Request', [':query' => $_GET, ':request' => $_POST, ':attributes' => array(), ':cookies' => $_COOKIE, ':files' => $_FILES, ':server' => $_SERVER]);
$injector->share('Symfony\\Component\\HttpFoundation\\Response');
// Templating engine
$injector->alias('Pics\\Template\\Renderer', 'Pics\\Template\\MustacheRenderer');
$injector->define('Mustache_Engine', [':options' => ['cache' => '/tmp/cache/mustache', 'loader' => new Mustache_Loader_FilesystemLoader(dirname(__DIR__) . '/templates', ['extension' => '.html'])]]);
// Database
$injector->share('PDO');
$injector->define('PDO', [':dsn' => $config['database']['dsn'], ':username' => $config['database']['username'], ':password' => $config['database']['password'], ':options' => array(\PDO::ATTR_PERSISTENT => true)]);
$injector->alias('Pics\\Repositories\\PicRepositoryInterface', 'Pics\\Repositories\\PSQLPicRepository');
$injector->alias('Pics\\Repositories\\CommentRepositoryInterface', 'Pics\\Repositories\\PSQLCommentRepository');
// Memcached
$injector->share('Memcached');
// File storage
$injector->share('Pics\\Storage\\AzureFileStorage');
$injector->define('Pics\\Storage\\AzureFileStorage', [':connectionString' => $config['azureConnString'], ':container' => $config['azureBlobContainer'], ':url' => $config['azureCDNUrl']]);
$injector->alias('Pics\\Storage\\FileStorageInterface', 'Pics\\Storage\\AzureFileStorage');
return $injector;
<?php

// di
$injector = new \Auryn\Injector();
// request and response
$injector->alias('Http\\Request', 'Http\\HttpRequest');
$injector->share('Http\\HttpRequest');
$injector->define('Http\\HttpRequest', [':get' => $_GET, ':post' => $_POST, ':cookies' => $_COOKIE, ':files' => $_FILES, ':server' => $_SERVER]);
$injector->alias('Http\\Response', 'Http\\HttpResponse');
$injector->share('Http\\HttpResponse');
// session
$injector->alias('App\\Session\\Session', 'App\\Session\\NativeSession');
$injector->share('App\\Session\\Session');
// blade
//$injector->alias('duncan3dc\Laravel\BladeInstance', 'duncan3dc\Laravel\BladeInstance');
//$injector->share('duncan3dc\Laravel\BladeInstance');
//$injector->define('duncan3dc\Laravel\BladeInstance', [
//    ':path'     => getenv('VIEWS_DIRECTORY'),
//    ':cache'    => getenv('CACHE_DIRECTORY')
//]);
// our renderer
$injector->alias('App\\Renderers\\BladeRenderer', 'App\\Renderers\\BladeRenderer');
$injector->share('App\\Renderers\\BladeRenderer');
$injector->define('App\\Renderers\\BladeRenderer', [':path' => getenv('VIEWS_DIRECTORY'), ':cache' => getenv('CACHE_DIRECTORY')]);
// monolog
$injector->define('Monolog\\Logger', [':name' => 'applogger']);
return $injector;
示例#7
0
<?php

use Symfony\Component\HttpFoundation\Request;
$injector = new \Auryn\Injector();
$request = Request::createFromGlobals();
$injector->share($request);
$twig = new \Twig_Environment(new \Twig_Loader_Filesystem('../resources/views/'), ['cache' => '../storage/twig-cache/']);
$injector->share($twig);
$injector->define('Jehaby\\Homepage\\Page\\FilePageReader', [':pageFolder' => __DIR__ . '/../resources/pages/']);
$injector->alias('Jehaby\\Homepage\\Page\\PageReader', 'Jehaby\\Homepage\\Page\\FilePageReader');
$injector->share('Jehaby\\Homepage\\Page\\FilePageReader');
return $injector;
示例#8
0
<?php

$injector = new \Auryn\Injector();
$injector->alias('Response', 'Symfony\\Component\\HttpFoundation\\Response');
$injector->share('Symfony\\Component\\HttpFoundation\\Response');
$injector->alias('Request', 'Symfony\\Component\\HttpFoundation\\Request');
$injector->share('Symfony\\Component\\HttpFoundation\\Request');
$injector->define('Symfony\\Component\\HttpFoundation\\Request', [':query' => $_GET, ':request' => $_POST, ':attributes' => array(), ':cookies' => $_COOKIE, ':files' => $_FILES, ':server' => $_SERVER]);
$injector->alias('DiffProvider', 'Karadiff\\Diff\\Providers\\DiffProvider');
$injector->share('Karadiff\\Diff\\Providers\\DiffProvider');
return $injector;
示例#9
0
use Symfony\Component\HttpFoundation\Session\Session;
$config = (include_once __DIR__ . '/../config/config.php');
$route = (include_once __DIR__ . '/../config/route.php');
$baseDir = $config['baseDir'];
$injector = new Auryn\Injector();
// global parameter
$injector->defineParam('config', $config);
// route dispatcher
$injector->prepare('Dispatcher', function ($obj, $injector) {
    $obj->injector = $injector;
});
// request
$request = Request::createFromGlobals();
$injector->share($request);
// router
$injector->define('AltoRouter', [':routes' => $route, ':basePath' => rtrim($baseDir, '/')]);
// template engine
$injector->alias('Template\\Renderer', 'Template\\PlatesRenderer');
$injector->define('League\\Plates\\Engine', [':directory' => __DIR__ . '/views/' . $config['theme']]);
$injector->alias('League\\Plates\\Extension\\ExtensionInterface', 'Template\\MyPlatesExtension');
$injector->define('Template\\MyPlatesExtension', [':baseDir' => $baseDir]);
// session and flash
$sessionFactory = function () {
    $session = new Session(null, null, new Lib\MyFlash());
    $session->setName('RakitanFramework');
    $session->start();
    return $session;
};
$injector->delegate('Symfony\\Component\\HttpFoundation\\Session\\Session', $sessionFactory);
$injector->share('Symfony\\Component\\HttpFoundation\\Session\\Session');
// authentication class
示例#10
0
<?php

$injector = new Auryn\Injector();
$injector->share('Framework\\Http\\Request');
$injector->define('Framework\\Http\\Request', [':query' => $_GET, ':request' => $_POST, '' => array(), ':server' => $_SERVER, ':files' => $_FILES, ':cookies' => $_COOKIE]);
$injector->share('Framework\\Http\\Response');
$injector->define('League\\Plates\\Engine', [':directory' => __DIR__ . '/../templates']);
$injector->alias('Framework\\Templates\\Renderer', 'Framework\\Templates\\PlatesRenderer');
$injector->share('Framework\\Templates\\PlatesRenderer');
$injector->define('Framework\\Page\\FilePageReader', [':pageFolder' => __DIR__ . '/../pages']);
$injector->alias('Framework\\Page\\PageReader', 'Framework\\Page\\FilePageReader');
$injector->share('Framework\\Page\\FilePageReader');
$injector->alias('Framework\\Templates\\FrontendRenderer', 'Framework\\Templates\\FrontendPlatesRenderer');
$injector->share('Framework\\Templates\\FrontendPlatesRenderer');
return $injector;
示例#11
0
<?php

require_once "vendor/autoload.php";
$cacheFactory = function () {
    $cacheDriver = new \Stash\Driver\FileSystem();
    return new \Stash\Pool($cacheDriver);
};
$injector = new Auryn\Injector();
$injector->delegate('Pool', $cacheFactory);
$injector->define('APG\\Fleet\\Fleet', [':airline' => 'AFA', ':path' => 'downloads/fleet/standard/']);
$fleet = $injector->make('APG\\Fleet\\Fleet');
示例#12
0
<?php

$injector = new \Auryn\Injector();
$connectionParams = ['driver' => 'pdo_sqlite', 'path' => \Jehaby\Exesise\Config::getDir() . '/storage/database.sqlite'];
$conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams);
$injector->share($conn);
$injector->alias(\Symfony\Component\Console\Output\OutputInterface::class, \Symfony\Component\Console\Output\ConsoleOutput::class);
$injector->define(\Monolog\Logger::class, ['defaultLogger', [new \Monolog\Handler\StreamHandler('storage/default.log')]]);
$injector->alias(\Psr\Log\LoggerInterface::class, \Monolog\Logger::class);
$injector->share(\Monolog\Logger::class);
示例#13
0
<?php

// Require .env for db config.
if (!is_file($env = __DIR__ . '/../.env')) {
    throw new RuntimeException('Please create a .env file before starting the app!');
}
require __DIR__ . '/../vendor/autoload.php';
//Load ENV vars.
$env = (new josegonzalez\Dotenv\Loader($env))->parse()->toArray();
//Create Injector for PDO db connection.
$injector = new \Auryn\Injector();
$injector->define('PDO', [':dsn' => 'mysql:host=localhost;dbname=' . $env['db_database'], ':username' => $env['db_username'], ':passwd' => $env['db_password']]);
$injector->share('PDO');
$injector->share('FluentPDO');
$app = Spark\Application::boot($injector);
$app->setMiddleware(['Relay\\Middleware\\ResponseSender', 'Spark\\Handler\\ExceptionHandler', 'Spark\\Handler\\RouteHandler', 'Spark\\Handler\\ActionHandler']);
$app->addRoutes(function (Spark\Router $r) {
    $r->get('/', 'Spark\\Project\\Domain\\APIDocs');
    // TODO: Implement a login/logout and pass around tokens instead of just the user's ID every call.
    /*
     * Notes on Auth Layer:
     * This API currently *only* covers the User Stories listed in the assignment
     * As such it does not currently handle any validation of the user being who they claim to be.
     * It does verify that the userId (employee or manager) is valid for the type of request issued.
     * The current userId field should be replaced with a validated token when validation is added.
     * I did not add an authentication layer, as the user stories do not reference how the login would occur
     * We might do oauth or direct API via a POST to create a login token, etc.
     */
    //Employees can only GET (read) information.
    $r->get('/myshifts[/{employeeId}]', 'Spark\\Project\\Domain\\Employee\\Shifts');
    $r->get('/mycoworkers[/{employeeId}]', 'Spark\\Project\\Domain\\Employee\\Coworkers');
示例#14
0
文件: bootstrap.php 项目: exts/app
 */
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/paths.php';
/**
 * -------------------------------
 * | DEPENDENCY INJECTOR
 * -------------------------------
 */
$injector = new Auryn\Injector();
/**
 * -------------------------------
 * | SETUP CONFIG
 * -------------------------------
 */
$injector->share(YamlLoader::class);
$injector->define(YamlLoader::class, [':directory' => PATH['CONFIG']]);
$injector->define(Config::class, ['loader' => YamlLoader::class]);
/** @var Config $config */
$config = $injector->make(Config::class);
/**
 * -------------------------------
 * | SETUP TWIG
 * -------------------------------
 */
/** @var \G4MR\Configs\Item $twig_options */
$twig_options = $config->getItem('twig');
$injector->share(Twig_Loader_Filesystem::class);
$injector->define(Twig_Loader_Filesystem::class, [':paths' => PATH['TEMPLATE']]);
$injector->share(Twig_Environment::class);
$injector->define(Twig_Environment::class, ['loader' => Twig_Loader_Filesystem::class, ':options' => ['autoescape' => $twig_options->get('autoescape', false), 'strict_variables' => $twig_options->get('strict_variables', false)]]);
/**
示例#15
0
文件: injector.php 项目: Zvax/pool
<?php

$injector = new \Auryn\Injector();
$injector->alias("Http\\Request", "Http\\HttpRequest");
$injector->alias("Http\\Response", "Http\\HttpResponse");
$injector->share("Http\\Request");
$injector->share("Http\\Response");
$injector->share("Pool\\Model\\Params");
$injector->share("View\\Site");
$injector->define("PDO", [":dsn" => "sqlite:" . __DIR__ . "/../data/pooldb.db", ":options" => [PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]]);
$injector->define("Http\\Request", [":get" => $_GET, ":post" => $_POST, ":files" => $_FILES, ":cookies" => $_COOKIE, ":server" => $_SERVER]);
$injector->alias("Templating\\Renderer", "Templating\\PhpTemplatesRenderer");
$injector->share("Templating\\Renderer");
$injector->define("Storage\\FileLoader", [":root" => __DIR__ . "/../templates", ":extension" => "php"]);
$injector->define("BasicWebsite\\Pages\\FilePageReader", [":pageFolder" => __DIR__ . "/../pages"]);
$injector->alias("BasicWebsite\\Pages\\PageReader", "BasicWebsite\\Pages\\FilePageReader");
$injector->share("BasicWebsite\\Pages\\PageReader");
$injector->alias("BasicWebsite\\Menu\\MenuReader", "BasicWebsite\\Menu\\ArrayMenuReader");
$injector->share("BasicWebsite\\Menu\\MenuReader");
return $injector;
示例#16
0
<?php

/**
* Returns $injector
*/
$config = (require __DIR__ . '/config.php');
$injector = new Auryn\Injector();
$injector->define('SQLite3', [':filename' => __DIR__ . '/storage/sqlite.db', ':flags' => \SQLITE3_OPEN_READWRITE | \SQLITE3_OPEN_CREATE, ':encryption_key' => $config['ENCRYPTION_KEY']]);
$injector->share('SQLite3');
return $injector;
示例#17
0
<?php

namespace Src;

$injector = new \Auryn\Injector();
$injector->alias('Http\\Request', 'Http\\HttpRequest');
$injector->share('Http\\HttpRequest');
$injector->define('Http\\HttpRequest', [':get' => $_GET, ':post' => $_POST, ':cookies' => $_COOKIE, ':files' => $_FILES, ':server' => $_SERVER]);
$injector->alias('Http\\Response', 'Http\\HttpResponse');
$injector->share('Http\\HttpResponse');
$injector->alias('Src\\Template\\Renderer', 'Src\\Template\\MustacheRenderer');
$injector->define('Mustache_Engine', [':options' => ['loader' => new \Mustache_Loader_FilesystemLoader(dirname(__DIR__) . '/src/template/views', ['extension' => '.html'])]]);
return $injector;
/**
 ********** SHARE *********
 *	Coming soon
 */
/**
 ********** ALIAS ********* 
 * Just like define, but instead of injecting raw data through the constructor, we create or 
 * add an instance of a class (object), this is called dependency injecton
 * @example see below
 */
/**
 * interface Engine {}		
 * class V8 implements Engine {}
 * class V6 implements Engine {}
 * class Car {
 *   private $engine;
 *   public function __construct(Engine $engine) {
 *       $this->engine = $engine;
<?php

// di
$injector = new \Auryn\Injector();
$signer = new Kunststube\CSRFP\SignatureGenerator(getenv('CSRF_SECRET'));
$injector->share($signer);
$blade = new duncan3dc\Laravel\BladeInstance(getenv('VIEWS_DIRECTORY'), getenv('CACHE_DIRECTORY'));
$injector->share($blade);
$injector->make('Acme\\Http\\Request');
$injector->make('Acme\\Http\\Response');
$injector->make('Acme\\Http\\Session');
$injector->share('Acme\\Http\\Request');
$injector->share('Acme\\Http\\Response');
$injector->share('Acme\\Http\\Session');
$injector->define('Acme\\Auth\\LoggedIn', ['session' => 'Acme\\Http\\Session']);
$injector->make('Acme\\Auth\\LoggedIn');
return $injector;