container.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <?php namespace Laravel;
  2. return array(
  3. /*
  4. |--------------------------------------------------------------------------
  5. | Laravel Components
  6. |--------------------------------------------------------------------------
  7. */
  8. 'laravel.database' => array('singleton' => true, 'resolver' => function($container)
  9. {
  10. $config = $container->resolve('laravel.config');
  11. return new Database\Manager($config->get('database.connections'), $config->get('database.default'));
  12. }),
  13. 'laravel.download' => array('singleton' => true, 'resolver' => function($container)
  14. {
  15. return new Download($container->resolve('laravel.file'));
  16. }),
  17. 'laravel.file' => array('singleton' => true, 'resolver' => function($container)
  18. {
  19. return new File($container->resolve('laravel.config')->get('mimes'));
  20. }),
  21. 'laravel.input' => array('singleton' => true, 'resolver' => function($container)
  22. {
  23. $application = $container->resolve('laravel.application');
  24. $input = array();
  25. if ($application->request->method == 'GET')
  26. {
  27. $input = $_GET;
  28. }
  29. elseif ($application->request->method == 'POST')
  30. {
  31. $input = $_POST;
  32. }
  33. elseif ($application->request->method == 'PUT' or $application->request->method == 'DELETE')
  34. {
  35. ($application->request->spoofed) ? $input = $_POST : parse_str(file_get_contents('php://input'), $input);
  36. }
  37. return new Input($input, $_FILES, new Cookie($_COOKIE));
  38. }),
  39. 'laravel.package' => array('singleton' => true, 'resolver' => function()
  40. {
  41. return new Package;
  42. }),
  43. 'laravel.redirect' => array('singleton' => true, 'resolver' => function($container)
  44. {
  45. return new Redirect($container->resolve('laravel.session.driver'), $container->resolve('laravel.url'));
  46. }),
  47. 'laravel.response' => array('singleton' => true, 'resolver' => function($container)
  48. {
  49. require_once SYS_PATH.'response'.EXT;
  50. return new Response_Factory($container->resolve('laravel.view'));
  51. }),
  52. 'laravel.router' => array('singleton' => true, 'resolver' => function($container)
  53. {
  54. return new Routing\Router($container->resolve('laravel.request'), require APP_PATH.'routes'.EXT, CONTROLLER_PATH);
  55. }),
  56. 'laravel.url' => array('singleton' => true, 'resolver' => function($container)
  57. {
  58. $request = $container->resolve('laravel.request');
  59. $base = $container->resolve('laravel.config')->get('application.url');
  60. $index = $container->resolve('laravel.config')->get('application.index');
  61. return new URL($container->resolve('laravel.router'), $base, $index, $request->secure);
  62. }),
  63. 'laravel.view' => array('singleton' => true, 'resolver' => function()
  64. {
  65. require_once SYS_PATH.'view'.EXT;
  66. return new View_Factory(VIEW_PATH, new View_Composer(require APP_PATH.'composers'.EXT));
  67. }),
  68. /*
  69. |--------------------------------------------------------------------------
  70. | Laravel Security Components
  71. |--------------------------------------------------------------------------
  72. */
  73. 'laravel.security.auth' => array('resolver' => function($container)
  74. {
  75. $hasher = $container->resolve('laravel.security.hashing.engine');
  76. return new Security\Auth(Session\Manager::driver(), $hasher);
  77. }),
  78. 'laravel.security.hashing.engine' => array('resolver' => function()
  79. {
  80. return new Security\Hashing\BCrypt(10, false);
  81. }),
  82. /*
  83. |--------------------------------------------------------------------------
  84. | Laravel Cookie Session Components
  85. |--------------------------------------------------------------------------
  86. */
  87. 'laravel.session.cookie' => array('resolver' => function($container)
  88. {
  89. $cookies = $container->resolve('laravel.request')->input->cookies;
  90. $config = $container->resolve('laravel.config')->get('session');
  91. return new Session\Cookie(Security\Crypter::make(), $cookies, $config);
  92. }),
  93. /*
  94. |--------------------------------------------------------------------------
  95. | Laravel Database Session Components
  96. |--------------------------------------------------------------------------
  97. */
  98. 'laravel.session.database' => array('resolver' => function($container)
  99. {
  100. $table = $container->resolve('laravel.config')->get('session.table');
  101. return new Session\Database($container->resolve('laravel.database.manager')->connection(), $table);
  102. }),
  103. /*
  104. |--------------------------------------------------------------------------
  105. | Laravel Cache Manager
  106. |--------------------------------------------------------------------------
  107. */
  108. 'laravel.cache' => array('singleton' => true, 'resolver' => function($container)
  109. {
  110. return new Cache\Manager($container, $container->resolve('laravel.config')->get('cache.driver'));
  111. }),
  112. /*
  113. |--------------------------------------------------------------------------
  114. | Laravel File Cache & Session Components
  115. |--------------------------------------------------------------------------
  116. */
  117. 'laravel.cache.file' => array('resolver' => function($container)
  118. {
  119. return new Cache\File($container->resolve('laravel.file'), CACHE_PATH);
  120. }),
  121. 'laravel.session.file' => array('resolver' => function($container)
  122. {
  123. return new Session\File($container->resolve('laravel.file'), SESSION_PATH);
  124. }),
  125. /*
  126. |--------------------------------------------------------------------------
  127. | Laravel APC Cache & Session Components
  128. |--------------------------------------------------------------------------
  129. */
  130. 'laravel.cache.apc' => array('resolver' => function($container)
  131. {
  132. return new Cache\APC(new Cache\APC_Engine, $container->resolve('laravel.config')->get('cache.key'));
  133. }),
  134. 'laravel.session.apc' => array('resolver' => function($container)
  135. {
  136. $lifetime = $container->resolve('laravel.config')->get('session.lifetime');
  137. return new Session\APC($container->resolve('laravel.cache.apc'), $lifetime);
  138. }),
  139. /*
  140. |--------------------------------------------------------------------------
  141. | Laravel Memcached Cache & Session Components
  142. |--------------------------------------------------------------------------
  143. */
  144. 'laravel.cache.memcached' => array('resolver' => function($container)
  145. {
  146. $connection = $container->resolve('laravel.cache.memcache.connection');
  147. $key = $container->resolve('laravel.config')->get('cache.key');
  148. return new Cache\Memcached($connection, $key);
  149. }),
  150. 'laravel.session.memcached' => array('resolver' => function($container)
  151. {
  152. $lifetime = $container->resolve('laravel.config')->get('session.lifetime');
  153. return new Session\Memcached($container->resolve('laravel.cache.memcached'), $lifetime);
  154. }),
  155. 'laravel.cache.memcache.connection' => array('singleton' => true, 'resolver' => function()
  156. {
  157. if ( ! class_exists('Memcache'))
  158. {
  159. throw new \Exception('Attempting to use Memcached, but the Memcache PHP extension is not installed on this server.');
  160. }
  161. $memcache = new \Memcache;
  162. foreach (Config::get('cache.servers') as $server)
  163. {
  164. $memcache->addServer($server['host'], $server['port'], true, $server['weight']);
  165. }
  166. if ($memcache->getVersion() === false)
  167. {
  168. throw new \Exception('Memcached is configured. However, no connections could be made. Please verify your memcached configuration.');
  169. }
  170. return $memcache;
  171. }),
  172. );