<?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;
<?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;
<?php

// https://github.com/PatrickLouys/no-framework-tutorial
$injector = new \Auryn\Injector();
$injector->alias('Http\\Response', 'Http\\HttpResponse');
$injector->share('Http\\HttpRequest');
$injector->define('Http\\HttpRequest', [':get' => $_GET, ':post' => $_POST, ':cookies' => $_COOKIE, ':files' => $_FILES, ':server' => $_SERVER]);
$injector->alias('Http\\Request', 'Http\\HttpRequest');
$injector->share('Http\\HttpResponse');
$injector->delegate('Twig_Environment', function () use($injector) {
    $loader = new Twig_Loader_Filesystem(dirname(__DIR__) . '/templates');
    $twig = new Twig_Environment($loader, ['debug' => true]);
    $twig->addExtension(new Twig_Extension_Debug());
    return $twig;
});
$injector->alias('Fotheby\\Template\\View', 'Fotheby\\Template\\TwigRenderer');
return $injector;
// https://github.com/PatrickLouys/no-framework-tutorial
<?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;
示例#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;
示例#6
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;
示例#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;
<?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;
示例#9
0
$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
//$injector->share('Lib\MyAuth');
// middleware
示例#10
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);
示例#11
0
<?php

$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->define('Mustache_Engine', [':options' => ['loader' => new Mustache_Loader_FilesystemLoader(__DIR__ . '/views', ['extension' => '.html'])]]);
$injector->delegate('Twig_Environment', function () use($injector) {
    $loader = new Twig_Loader_Filesystem(__DIR__ . '/views');
    $twig = new Twig_Environment($loader);
    return $twig;
});
$injector->alias('Aframe\\Template\\Renderer', 'Aframe\\Template\\TwigRenderer');
$injector->alias('Aframe\\Template\\FrontendRenderer', 'Aframe\\Template\\FrontendTwigRenderer');
$injector->define('Aframe\\Page\\FilePageReader', [':pageFolder' => __DIR__ . '/views']);
$injector->alias('Aframe\\Page\\PageReader', 'Aframe\\Page\\FilePageReader');
$injector->share('Aframe\\Page\\FilePageReader');
$injector->alias('Aframe\\Menu\\MenuReader', 'Aframe\\Menu\\ArrayMenuReader');
$injector->share('Aframe\\Menu\\FileMenuReader');
return $injector;
示例#12
0
<?php

/**
 * Dependencies
 *
 * This application uses Auryn. You can find docuentation here
 * 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
示例#13
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;
示例#14
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;