public function test__add_register_boot_ServiceProviders() { $this->assertFalse($this->di->has('test_provider'), 'test_provider must not exist.'); $this->sm->add(TestServiceProvider::class, TRUE); $this->assertTrue($this->di->has(TestServiceProvider::class), 'TestServiceProvider::class must exist in the DI.'); $this->sm->registerServiceProviders(); $this->assertTrue($this->di->has('test_provider'), 'test_provider must exist.'); $this->assertEquals($this->di['test_provider'], 'I am a test provider.', 'test_provider must return a predetermined string.'); $this->sm->bootAll(); $this->assertEquals($this->di['test_provider'], 'I am a modified test provider.', 'test_provider must return a modified string.'); }
/** * Resolve the subscriber instance. * * @param mixed $subscriber * * @return mixed */ private function resolve_subscriber($subscriber) { if (is_string($subscriber)) { return $this->forge->make($subscriber); } return $subscriber; }
/** * Uses the container to resolve arguments * * @param array $args * * @return array */ function resolveArguments(array $args) { $resolved = []; foreach ($args as $arg) { $resolved[] = is_string($arg) && ($this->di->has($arg) || $this->di->isSingleton($arg) || class_exists($arg)) ? $this->di->get($arg) : $arg; } return $resolved; }
/** * @param $processor * @param $method * * @return mixed */ private function invoke_controller($processor, $method) { // determine if the controller implements a router if (method_exists($processor, 'routeTo')) { // routing controller - send the $method to the controller router $result = $this->forge->callWithDependencyInjection([$processor, 'routeTo'], [$method]); } else { // standard controller $result = $this->forge->callWithDependencyInjection([$processor, $method]); } return $result; }
/** * Boot all registered providers. */ public function bootAll() { if (!$this->booted) { foreach ($this->providers as $provider => $is) { if (!$this->isRegistered($provider)) { $this->registerServiceProvider($provider); } if (!$this->isBooted($provider)) { $this->forge->make($provider)->boot(); } } $this->booted = TRUE; } }
public function test_Listening() { $di = Forge::getInstance(); /** @var Collection $collection */ $collection = new Collection(); /** @var Events $events */ $events = $di['events']; $events->subscribe(Collection::class); # we start with nothing $this->assertFalse($collection->any()); # now listen for a collection new item $events->listen('collection.new.item', EventsTest::class . '@test_CollectionEvent'); $this->assertEquals('collection.fired', $events->fire('collection.new.item')[0]); }
public function register() { /** @var Forge $di */ $di = $this->forge; # register collections and paths # $forge->add(['collection', Collection::class]); $di->add(['paths', Paths::class]); # cogs principle service container $di->singleton([ContainerInterface::class, Forge::class], new Forge()); # illuminate/container service container $di->singleton(['ioc', IlluminateContainer::class], function () { return Forge::getInstance()->container(); }); # register Application context $di->singleton(['context', Context::class], new Context()); # register cogs principle event dispatcher $di->singleton(['events', Events::class], new Events()); $this->provides += [Context::class, Events::class, Paths::class]; }
namespace Og; /** * @package Og * @version 0.1.0 * @author Greg Truesdell <*****@*****.**> */ use Dotenv\Dotenv; use Og\Kernel\Kernel; include 'paths.php'; include SUPPORT . 'helpers.php'; include SUPPORT . 'messages.php'; include VENDOR . 'autoload.php'; /** @noinspection PhpUnusedLocalVariableInspection */ $forge = new Forge(new \Illuminate\Container\Container()); // register the Config $forge->add(['config', Config::class], Config::createFromFolder(CONFIG)); // register the Kernel $forge->singleton(['kernel', Kernel::class], new Kernel($forge)); // set the timezone (as required by earlier versions of PHP before 7.0.0 date_default_timezone_set($forge['config']['app.timezone']); # load environment as a requirement if (file_exists(ROOT . '.env')) { $dotenv = new Dotenv(ROOT); $dotenv->overload(); } else { throw new \LogicException('Unable to find root environment file. Did you remember to rename `.env-example?'); } # install Tracy if in DEBUG mode if (strtolower(getenv('DEBUG')) === 'true') {
/** * @param null $abstract * * @return mixed|Application */ function app($abstract = NULL) { return $abstract ? Forge::make($abstract) : Forge::make('app'); }
<?php /** * @package Og * @author Greg Truesdell <*****@*****.**> */ namespace Og; use Dotenv\Dotenv; use Og\Kernel\Kernel; # get the root define('TEST_PATH', dirname(__DIR__) . '/../'); define('Og\\COLLECT_FUNCTIONS_AND_CLASSES', FALSE); date_default_timezone_set('America/Vancouver'); include TEST_PATH . 'boot/paths.php'; include SUPPORT . 'helpers.php'; include SUPPORT . 'messages.php'; include TEST_PATH . 'vendor/autoload.php'; # load environment if (file_exists(TEST_PATH . 'tests/.env')) { $dotenv = new Dotenv(TEST_PATH); $dotenv->load(); } include BOOT . 'debug.php'; $forge = Forge::getInstance(); $forge->add(['config', Config::class], Config::createFromFolder(CONFIG)); //new Application(new Kernel(Forge::getInstance())); new Kernel(Forge::getInstance());
/** * Middleware 'Factory' * * @return static */ public static function create() { # cache a forge reference static $forge = NULL; $forge = $forge ?: Forge::getInstance(); return new static($forge); }
/** * AbstractView constructor. * * @param array $settings * */ public function __construct($settings = []) { $this->forge = Forge::getInstance(); parent::__construct($settings); }
/** @return static */ public function getInstance() { return static::$instance ?: new static(new Kernel(Forge::getInstance())); }
<?php namespace PHPSTORM_META; /** * @package Og * @version 0.1.0 * @author Greg Truesdell <*****@*****.**> */ /** @noinspection PhpIllegalArrayKeyTypeInspection */ /** @noinspection PhpUnusedLocalVariableInspection */ //@formatter:off $STATIC_METHOD_TYPES = [app('') => ['' instanceof \Og\Application, 'app' instanceof \Og\Application, 'collection' instanceof \Og\Collection, 'config' instanceof \Og\Config, 'context' instanceof \Og\Context, 'database' instanceof \Og\Database, 'events' instanceof \Og\Events, 'forge' instanceof \Og\Forge, 'input' instanceof \Og\Support\Collections\Input, 'ioc' instanceof \Illuminate\Container\Container, 'kernel' instanceof \Og\Kernel, 'logger' instanceof \Tracy\Firelogger, 'paths' instanceof \Og\Paths, 'request' instanceof \Zend\Stratigility\Http\Request, 'response' instanceof \Zend\Stratigility\Http\Response, 'routing' instanceof \Og\Routing, 'server' instanceof \Zend\Diactoros\Server, 'session' instanceof \Aura\Session\Session, 'yaml' instanceof \Symfony\Component\Yaml\Yaml, '\\Aura\\Session\\Session' instanceof Aura\Session\Session, '\\Illuminate\\Container\\Container' instanceof Illuminate\Container\Container, '\\Og\\Application' instanceof Og\Application, '\\Og\\Collection' instanceof Og\Collection, '\\Og\\Config' instanceof Og\Config, '\\Og\\Context' instanceof Og\Context, '\\Og\\Database' instanceof Og\Database, '\\Og\\Events' instanceof Og\Events, '\\Og\\Forge' instanceof Og\Forge, '\\Og\\Kernel' instanceof Og\Kernel, '\\Og\\Paths' instanceof Og\Paths, '\\Og\\Routing' instanceof Og\Routing, '\\Tracy\\Firelogger' instanceof Tracy\Firelogger, '\\Symfony\\Component\\Yaml\\Yaml' instanceof Symfony\Component\Yaml\Yaml, '\\Zend\\Diactoros\\Server' instanceof Zend\Diactoros\Server, '\\Zend\\Stratigility\\Http\\Request' instanceof Zend\Stratigility\Http\Request, '\\Zend\\Stratigility\\Http\\Response' instanceof Zend\Stratigility\Http\Response], forge('') => ['' instanceof \Og\Forge, 'app' instanceof \Og\Application, 'collection' instanceof \Og\Collection, 'config' instanceof \Og\Config, 'context' instanceof \Og\Context, 'database' instanceof \Og\Database, 'events' instanceof \Og\Events, 'forge' instanceof \Og\Forge, 'input' instanceof \Og\Support\Collections\Input, 'ioc' instanceof \Illuminate\Container\Container, 'kernel' instanceof \Og\Kernel, 'logger' instanceof \Tracy\Firelogger, 'paths' instanceof \Og\Paths, 'request' instanceof \Zend\Stratigility\Http\Request, 'response' instanceof \Zend\Stratigility\Http\Response, 'routing' instanceof \Og\Routing, 'server' instanceof \Zend\Diactoros\Server, 'session' instanceof \Aura\Session\Session, 'yaml' instanceof \Symfony\Component\Yaml\Yaml, '\\Aura\\Session\\Session' instanceof \Aura\Session\Session, '\\Illuminate\\Container\\Container' instanceof \Illuminate\Container\Container, '\\Og\\Application' instanceof \Og\Application, '\\Og\\Collection' instanceof \Og\Collection, '\\Og\\Config' instanceof \Og\Config, '\\Og\\Context' instanceof \Og\Context, '\\Og\\Database' instanceof \Og\Database, '\\Og\\Events' instanceof \Og\Events, '\\Og\\Forge' instanceof \Og\Forge, '\\Og\\Kernel' instanceof \Og\Kernel, '\\Og\\Paths' instanceof \Og\Paths, '\\Og\\Routing' instanceof \Og\Routing, '\\Tracy\\Firelogger' instanceof \Tracy\Firelogger, '\\Symfony\\Component\\Yaml\\Yaml' instanceof \Symfony\Component\Yaml\Yaml, '\\Zend\\Diactoros\\Server' instanceof \Zend\Diactoros\Server, '\\Zend\\Stratigility\\Http\\Request' instanceof \Zend\Stratigility\Http\Request, '\\Zend\\Stratigility\\Http\\Response' instanceof \Zend\Stratigility\Http\Response], \Og\Forge::make('') => ['' == '@', 'app' instanceof \Og\Application, 'collection' instanceof \Og\Collection, 'config' instanceof \Og\Config, 'context' instanceof \Og\Context, 'database' instanceof \Og\Database, 'events' instanceof \Og\Events, 'forge' instanceof \Og\Forge, 'input' instanceof \Og\Support\Collections\Input, 'ioc' instanceof \Illuminate\Container\Container, 'kernel' instanceof \Og\Kernel, 'logger' instanceof \Tracy\Firelogger, 'paths' instanceof \Og\Paths, 'request' instanceof \Zend\Stratigility\Http\Request, 'response' instanceof \Zend\Stratigility\Http\Response, 'routing' instanceof \Og\Routing, 'server' instanceof \Zend\Diactoros\Server, 'session' instanceof \Aura\Session\Session, 'yaml' instanceof \Symfony\Component\Yaml\Yaml, '\\Aura\\Session\\Session' instanceof \Aura\Session\Session, '\\Illuminate\\Container\\Container' instanceof \Illuminate\Container\Container, '\\Og\\Application' instanceof \Og\Application, '\\Og\\Collection' instanceof \Og\Collection, '\\Og\\Config' instanceof \Og\Config, '\\Og\\Context' instanceof \Og\Context, '\\Og\\Database' instanceof \Og\Database, '\\Og\\Events' instanceof \Og\Events, '\\Og\\Forge' instanceof \Og\Forge, '\\Og\\Kernel' instanceof \Og\Kernel, '\\Og\\Paths' instanceof \Og\Paths, '\\Og\\Routing' instanceof \Og\Routing, '\\Tracy\\Firelogger' instanceof \Tracy\Firelogger, '\\Symfony\\Component\\Yaml\\Yaml' instanceof \Symfony\Component\Yaml\Yaml, '\\Zend\\Diactoros\\Server' instanceof \Zend\Diactoros\Server, '\\Zend\\Stratigility\\Http\\Request' instanceof \Zend\Stratigility\Http\Request, '\\Zend\\Stratigility\\Http\\Response' instanceof \Zend\Stratigility\Http\Response], new \Og\Forge() => ['' == '@', 'app' instanceof \Og\Application, 'collection' instanceof \Og\Collection, 'config' instanceof \Og\Config, 'context' instanceof \Og\Context, 'database' instanceof \Og\Database, 'events' instanceof \Og\Events, 'forge' instanceof \Og\Forge, 'input' instanceof \Og\Support\Collections\Input, 'ioc' instanceof \Illuminate\Container\Container, 'kernel' instanceof \Og\Kernel, 'logger' instanceof \Tracy\Firelogger, 'paths' instanceof \Og\Paths, 'request' instanceof \Zend\Stratigility\Http\Request, 'response' instanceof \Zend\Stratigility\Http\Response, 'routing' instanceof \Og\Routing, 'server' instanceof \Zend\Diactoros\Server, 'session' instanceof \Aura\Session\Session, 'yaml' instanceof \Symfony\Component\Yaml\Yaml, '\\Aura\\Session\\Session' instanceof \Aura\Session\Session, '\\Illuminate\\Container\\Container' instanceof \Illuminate\Container\Container, '\\Og\\Application' instanceof \Og\Application, '\\Og\\Collection' instanceof \Og\Collection, '\\Og\\Config' instanceof \Og\Config, '\\Og\\Context' instanceof \Og\Context, '\\Og\\Database' instanceof \Og\Database, '\\Og\\Events' instanceof \Og\Events, '\\Og\\Forge' instanceof \Og\Forge, '\\Og\\Kernel' instanceof \Og\Kernel, '\\Og\\Paths' instanceof \Og\Paths, '\\Og\\Routing' instanceof \Og\Routing, '\\Tracy\\Firelogger' instanceof \Tracy\Firelogger, '\\Symfony\\Component\\Yaml\\Yaml' instanceof \Symfony\Component\Yaml\Yaml, '\\Zend\\Diactoros\\Server' instanceof \Zend\Diactoros\Server, '\\Zend\\Stratigility\\Http\\Request' instanceof \Zend\Stratigility\Http\Request, '\\Zend\\Stratigility\\Http\\Response' instanceof \Zend\Stratigility\Http\Response], \Og\Forge::get('') => ['' == '@', 'app' instanceof \Og\Application, 'collection' instanceof \Og\Collection, 'config' instanceof \Og\Config, 'context' instanceof \Og\Context, 'database' instanceof \Og\Database, 'events' instanceof \Og\Events, 'forge' instanceof \Og\Forge, 'input' instanceof \Og\Support\Collections\Input, 'ioc' instanceof \Illuminate\Container\Container, 'kernel' instanceof \Og\Kernel, 'logger' instanceof \Tracy\Firelogger, 'paths' instanceof \Og\Paths, 'request' instanceof \Zend\Stratigility\Http\Request, 'response' instanceof \Zend\Stratigility\Http\Response, 'routing' instanceof \Og\Routing, 'server' instanceof \Zend\Diactoros\Server, 'session' instanceof \Aura\Session\Session, 'yaml' instanceof \Symfony\Component\Yaml\Yaml, '\\Aura\\Session\\Session' instanceof \Aura\Session\Session, '\\Illuminate\\Container\\Container' instanceof \Illuminate\Container\Container, '\\Og\\Application' instanceof \Og\Application, '\\Og\\Collection' instanceof \Og\Collection, '\\Og\\Config' instanceof \Og\Config, '\\Og\\Context' instanceof \Og\Context, '\\Og\\Database' instanceof \Og\Database, '\\Og\\Events' instanceof \Og\Events, '\\Og\\Forge' instanceof \Og\Forge, '\\Og\\Kernel' instanceof \Og\Kernel, '\\Og\\Paths' instanceof \Og\Paths, '\\Og\\Routing' instanceof \Og\Routing, '\\Tracy\\Firelogger' instanceof \Tracy\Firelogger, '\\Symfony\\Component\\Yaml\\Yaml' instanceof \Symfony\Component\Yaml\Yaml, '\\Zend\\Diactoros\\Server' instanceof \Zend\Diactoros\Server, '\\Zend\\Stratigility\\Http\\Request' instanceof \Zend\Stratigility\Http\Request, '\\Zend\\Stratigility\\Http\\Response' instanceof \Zend\Stratigility\Http\Response]];
public function test01() { $app = new Application(new Kernel(Forge::getInstance())); //$this->assertEquals($app, app('app')); }
<?php /** * @package Og * @version 0.1.0 * @author Greg Truesdell <*****@*****.**> */ use Og\Forge; use Og\Support\Util; use Tracy\Debugger; use Tracy\FireLogger; Debugger::$maxDepth = 6; Debugger::enable(Debugger::DEVELOPMENT, LOCAL_LOGS); Debugger::$showLocation = TRUE; $logger = Debugger::getLogger(); Forge::getInstance()->instance(['logger', FireLogger::class], $logger); /** * @param bool $raw * * @return string */ function elapsed_time_since_request($raw = FALSE) { return !$raw ? sprintf("%8.1f ms", (microtime(TRUE) - $_SERVER['REQUEST_TIME_FLOAT']) * 1000) : (microtime(TRUE) - $_SERVER['REQUEST_TIME_FLOAT']) * 1000; } /** * @param $index * * @return string */ function location_from_backtrace($index = 2)
/** * @expectedException \InvalidArgumentException */ public function test_InvalidArgumentException() { $this->forge->get('google'); }