<?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;
<?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 $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;
<?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;
$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
<?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);
<?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;
<?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
<?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;
<?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;