public function testResolve() { $DIResolver = new DIResolver(); $DIResolver->cacheUnResolvable('\\Linna\\FOO\\FOOClassAA', new FOOClassAA('DIResolver')); $FOOClassA = $DIResolver->resolve('\\Linna\\FOO\\FOOClassA'); $FOOClassB = $DIResolver->resolve('\\Linna\\FOO\\FOOClassB'); $FOOClassC = $DIResolver->resolve('\\Linna\\FOO\\FOOClassC'); $FOOClassD = $DIResolver->resolve('\\Linna\\FOO\\FOOClassD'); $FOOClassE = $DIResolver->resolve('\\Linna\\FOO\\FOOClassE'); $FOOClassF = $DIResolver->resolve('\\Linna\\FOO\\FOOClassF'); $FOOClassG = $DIResolver->resolve('\\Linna\\FOO\\FOOClassG'); $FOOClassH = $DIResolver->resolve('\\Linna\\FOO\\FOOClassH'); $FOOClassI = $DIResolver->resolve('\\Linna\\FOO\\FOOClassI'); $this->assertInstanceOf(\Linna\FOO\FOOClassA::class, $FOOClassA); $this->assertInstanceOf(\Linna\FOO\FOOClassB::class, $FOOClassB); $this->assertInstanceOf(\Linna\FOO\FOOClassC::class, $FOOClassC); $this->assertInstanceOf(\Linna\FOO\FOOClassD::class, $FOOClassD); $this->assertInstanceOf(\Linna\FOO\FOOClassE::class, $FOOClassE); $this->assertInstanceOf(\Linna\FOO\FOOClassF::class, $FOOClassF); $this->assertInstanceOf(\Linna\FOO\FOOClassG::class, $FOOClassG); $this->assertInstanceOf(\Linna\FOO\FOOClassH::class, $FOOClassH); $this->assertInstanceOf(\Linna\FOO\FOOClassI::class, $FOOClassI); }
/** * Dependency Injection Section * */ //create dipendency injection resolver $DIResolver = new DIResolver(); //add unresolvable class to DIResolver $DIResolver->cacheUnResolvable('\\Linna\\Database\\Database', $dataBase); //$DIResolver->cacheUnResolvable('\Memcached', $memcached); //$DIResolver->cacheUnResolvable('\Linna\Session\MemcachedSessionHandler', new MemcachedSessionHandler($memcached, $options['session']['expire'])); /** * Session section * */ //resolve Session Handler $sessionHandler = $DIResolver->resolve('\\Linna\\Session\\DatabaseSessionHandler'); //$sessionHandler = $DIResolver->resolve('\Linna\Session\MemcachedSessionHandler'); //create session object $session = new Session($options['session']); //set session handler //optional if not set, app will use php session standard storage $session->setSessionHandler($sessionHandler); //start session $session->start(); //store session instance $DIResolver->cacheUnResolvable('\\Linna\\Session\\Session', $session); /** * Router Section * */ //start router