Commit 600e411a authored by Taylor Otwell's avatar Taylor Otwell

more refactoring on DI and IoC.

parent 4525eae2
...@@ -22,7 +22,7 @@ return array( ...@@ -22,7 +22,7 @@ return array(
'Asset' => 'Laravel\\Asset', 'Asset' => 'Laravel\\Asset',
'Auth' => 'Laravel\\Facades\\Auth', 'Auth' => 'Laravel\\Facades\\Auth',
'Benchmark' => 'Laravel\\Benchmark', 'Benchmark' => 'Laravel\\Benchmark',
'Cache' => 'Laravel\\Facades\\Cache', 'Cache' => 'Laravel\\Cache',
'Config' => 'Laravel\\Config', 'Config' => 'Laravel\\Config',
'Controller' => 'Laravel\\Controller', 'Controller' => 'Laravel\\Controller',
'Cookie' => 'Laravel\\Cookie', 'Cookie' => 'Laravel\\Cookie',
......
<?php namespace Laravel\Cache; <?php namespace Laravel\Cache;
use Laravel\Container; use Laravel\IoC;
class Manager { class Manager {
/** /**
* All of the active cache drivers. * All of the active cache drivers.
* *
* @var Cache\Driver * @var array
*/ */
public $drivers = array(); protected static $drivers = array();
/**
* The application IoC container.
*
* @var Container
*/
private $container;
/**
* The default cache driver.
*
* @var string
*/
private $default;
/**
* Create a new cache manager instance.
*
* @param Container $container
* @return void
*/
public function __construct(Container $container, $default)
{
$this->default = $default;
$this->container = $container;
}
/** /**
* Get a cache driver instance. * Get a cache driver instance.
...@@ -46,21 +20,21 @@ class Manager { ...@@ -46,21 +20,21 @@ class Manager {
* @param string $driver * @param string $driver
* @return Cache\Driver * @return Cache\Driver
*/ */
public function driver($driver = null) public static function driver($driver = null)
{ {
if (is_null($driver)) $driver = $this->default; if (is_null($driver)) $driver = Config::get('cache.default');
if ( ! array_key_exists($driver, $this->drivers)) if ( ! array_key_exists($driver, static::$drivers))
{ {
if ( ! $this->container->registered('laravel.cache.'.$driver)) if ( ! IoC::container()->registered('laravel.cache.'.$driver))
{ {
throw new \Exception("Cache driver [$driver] is not supported."); throw new \Exception("Cache driver [$driver] is not supported.");
} }
return $this->drivers[$driver] = $this->container->resolve('laravel.cache.'.$driver); return static::$drivers[$driver] = IoC::container()->resolve('laravel.cache.'.$driver);
} }
return $this->drivers[$driver]; return static::$drivers[$driver];
} }
/** /**
...@@ -69,9 +43,9 @@ class Manager { ...@@ -69,9 +43,9 @@ class Manager {
* Passing method calls to the driver instance provides a convenient API for the developer * Passing method calls to the driver instance provides a convenient API for the developer
* when always using the default cache driver. * when always using the default cache driver.
*/ */
public function __call($method, $parameters) public static function __callStatic($method, $parameters)
{ {
return call_user_func_array(array($this->driver(), $method), $parameters); return call_user_func_array(array(static::driver(), $method), $parameters);
} }
} }
\ No newline at end of file
...@@ -54,12 +54,6 @@ return array( ...@@ -54,12 +54,6 @@ return array(
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
*/ */
'laravel.cache' => array('singleton' => true, 'resolver' => function($c)
{
return new Cache\Manager($c, Config::get('cache.driver'));
}),
'laravel.cache.apc' => array('resolver' => function($c) 'laravel.cache.apc' => array('resolver' => function($c)
{ {
return new Cache\Drivers\APC(Config::get('cache.key')); return new Cache\Drivers\APC(Config::get('cache.key'));
...@@ -129,9 +123,7 @@ return array( ...@@ -129,9 +123,7 @@ return array(
'laravel.session.cookie' => array('resolver' => function($c) 'laravel.session.cookie' => array('resolver' => function($c)
{ {
$cookies = $c->resolve('laravel.cookie'); return new Session\Drivers\Cookie($c->resolve('laravel.crypter'));
return new Session\Drivers\Cookie($c->resolve('laravel.crypter'), $cookies);
}), }),
......
...@@ -42,15 +42,9 @@ abstract class Controller { ...@@ -42,15 +42,9 @@ abstract class Controller {
*/ */
public function __get($key) public function __get($key)
{ {
$container = IoC::container(); if (IoC::container()->registered($key))
if ($container->registered('laravel.'.$key))
{
return $container->resolve('laravel.'.$key);
}
elseif ($container->registered($key))
{ {
return $container->resolve($key); return IoC::container()->resolve($key);
} }
throw new \Exception("Attempting to access undefined property [$key] on controller."); throw new \Exception("Attempting to access undefined property [$key] on controller.");
......
...@@ -2,13 +2,6 @@ ...@@ -2,13 +2,6 @@
class Cookie { class Cookie {
/**
* The cookies that will be sent to the browser at the end of the request.
*
* @var array
*/
protected static $queue = array();
/** /**
* Determine if a cookie exists. * Determine if a cookie exists.
* *
...@@ -84,26 +77,13 @@ class Cookie { ...@@ -84,26 +77,13 @@ class Cookie {
*/ */
public static function put($name, $value, $minutes = 0, $path = '/', $domain = null, $secure = false, $http_only = false) public static function put($name, $value, $minutes = 0, $path = '/', $domain = null, $secure = false, $http_only = false)
{ {
if (headers_sent()) return false;
if ($minutes < 0) unset($_COOKIE[$name]); if ($minutes < 0) unset($_COOKIE[$name]);
$time = ($minutes != 0) ? time() + ($minutes * 60) : 0; $time = ($minutes != 0) ? time() + ($minutes * 60) : 0;
static::$queue[] = compact('name', 'value', 'time', 'path', 'domain', 'secure', 'http_only'); return setcookie($name, $value, $time, $path, $domain, $secure, $http_only);
}
/**
* Send all of the cookies in the queue to the browser.
*
* This method is called automatically at the end of every request.
*
* @return void
*/
public static function send()
{
foreach (static::$queue as $cookie)
{
call_user_func_array('setcookie', $cookie);
}
} }
/** /**
......
...@@ -33,8 +33,6 @@ abstract class Facade { ...@@ -33,8 +33,6 @@ abstract class Facade {
} }
class Auth extends Facade { public static $resolve = 'laravel.auth'; } class Auth extends Facade { public static $resolve = 'laravel.auth'; }
class Cache extends Facade { public static $resolve = 'laravel.cache'; }
class Crypter extends Facade { public static $resolve = 'laravel.crypter'; } class Crypter extends Facade { public static $resolve = 'laravel.crypter'; }
class Hasher extends Facade { public static $resolve = 'laravel.hasher'; } class Hasher extends Facade { public static $resolve = 'laravel.hasher'; }
class Package extends Facade { public static $resolve = 'laravel.package'; }
class Session extends Facade { public static $resolve = 'laravel.session'; } class Session extends Facade { public static $resolve = 'laravel.session'; }
\ No newline at end of file
...@@ -79,11 +79,6 @@ if (isset($session)) ...@@ -79,11 +79,6 @@ if (isset($session))
$session->close($container->resolve('laravel.session'), Config::get('session')); $session->close($container->resolve('laravel.session'), Config::get('session'));
} }
// --------------------------------------------------------------
// Send the queued cookies to the browser.
// --------------------------------------------------------------
Cookie::send();
// -------------------------------------------------------------- // --------------------------------------------------------------
// Send the response to the browser. // Send the response to the browser.
// -------------------------------------------------------------- // --------------------------------------------------------------
......
<?php namespace Laravel; <?php namespace Laravel;
class Paginator_Factory {
protected $request;
protected $html;
protected $lang;
public function __construct(Request $request, HTML $html, Lang_Factory $lang)
{
$this->html = $html;
$this->lang = $lang;
$this->request = $request;
}
public function make($results, $total, $per_page)
{
$page = Paginator::page($total, $per_page);
$last_page = ceil($total / $per_page);
return new Paginator($this->request, $this->html, $this->lang, $results, $page, $total, $per_page, $last_page);
}
}
class Paginator { class Paginator {
/** /**
...@@ -87,13 +61,10 @@ class Paginator { ...@@ -87,13 +61,10 @@ class Paginator {
* @param int $last_page * @param int $last_page
* @return void * @return void
*/ */
protected function __construct(Request $request, HTML $html, Lang_Factory $lang, $results, $page, $total, $per_page, $last_page) protected function __construct($results, $page, $total, $per_page, $last_page)
{ {
$this->html = $html;
$this->lang = $lang;
$this->page = $page; $this->page = $page;
$this->total = $total; $this->total = $total;
$this->request = $request;
$this->results = $results; $this->results = $results;
$this->per_page = $per_page; $this->per_page = $per_page;
$this->last_page = $last_page; $this->last_page = $last_page;
...@@ -125,7 +96,7 @@ class Paginator { ...@@ -125,7 +96,7 @@ class Paginator {
*/ */
public static function page($total, $per_page) public static function page($total, $per_page)
{ {
$page = IoC::container()->resolve('laravel.input')->get('page', 1); $page = Input::get('page', 1);
if (is_numeric($page) and $page > $last_page = ceil($total / $per_page)) if (is_numeric($page) and $page > $last_page = ceil($total / $per_page))
{ {
...@@ -273,7 +244,7 @@ class Paginator { ...@@ -273,7 +244,7 @@ class Paginator {
$append .= '&'.$key.'='.$value; $append .= '&'.$key.'='.$value;
} }
return HTML::link(Request::uri().'?page='.$page.$append, $text, compact('class'), Request::is_secure()); return HTML::link(Request::uri().'?page='.$page.$append, $text, compact('class'), Request::secure());
} }
/** /**
......
<?php namespace Laravel\Session\Drivers; <?php namespace Laravel\Session\Drivers;
use Laravel\Cookie as C;
use Laravel\Security\Crypter; use Laravel\Security\Crypter;
class Cookie implements Driver { class Cookie implements Driver {
/**
* The cookie manager instance.
*
* @var Cookie
*/
private $cookie;
/** /**
* The crypter instance. * The crypter instance.
* *
...@@ -25,13 +19,11 @@ class Cookie implements Driver { ...@@ -25,13 +19,11 @@ class Cookie implements Driver {
/** /**
* Create a new Cookie session driver instance. * Create a new Cookie session driver instance.
* *
* @param Crypter $crypter * @param Crypter $crypter
* @param Laravel\Cookie $cookie
* @return void * @return void
*/ */
public function __construct(Crypter $crypter, \Laravel\Cookie $cookie) public function __construct(Crypter $crypter)
{ {
$this->cookie = $cookie;
$this->crypter = $crypter; $this->crypter = $crypter;
} }
...@@ -45,9 +37,9 @@ class Cookie implements Driver { ...@@ -45,9 +37,9 @@ class Cookie implements Driver {
*/ */
public function load($id) public function load($id)
{ {
if ($this->cookie->has('session_payload')) if (C::has('session_payload'))
{ {
return unserialize($this->crypter->decrypt($this->cookie->get('session_payload'))); return unserialize($this->crypter->decrypt(C::get('session_payload')));
} }
} }
...@@ -60,14 +52,11 @@ class Cookie implements Driver { ...@@ -60,14 +52,11 @@ class Cookie implements Driver {
*/ */
public function save($session, $config) public function save($session, $config)
{ {
if ( ! headers_sent()) extract($config);
{
extract($config);
$payload = $this->crypter->encrypt(serialize($session)); $payload = $this->crypter->encrypt(serialize($session));
$this->cookie->put('session_payload', $payload, $lifetime, $path, $domain); C::put('session_payload', $payload, $lifetime, $path, $domain);
}
} }
/** /**
...@@ -78,7 +67,7 @@ class Cookie implements Driver { ...@@ -78,7 +67,7 @@ class Cookie implements Driver {
*/ */
public function delete($id) public function delete($id)
{ {
$this->cookie->forget('session_payload'); C::forget('session_payload');
} }
} }
\ No newline at end of file
...@@ -4,6 +4,7 @@ use Closure; ...@@ -4,6 +4,7 @@ use Closure;
use Laravel\IoC; use Laravel\IoC;
use Laravel\Str; use Laravel\Str;
use Laravel\Lang; use Laravel\Lang;
use Laravel\Database\Manager as Database;
class Validator { class Validator {
...@@ -45,7 +46,7 @@ class Validator { ...@@ -45,7 +46,7 @@ class Validator {
/** /**
* The database connection that should be used by the validator. * The database connection that should be used by the validator.
* *
* @var DB\Connection * @var Database\Connection
*/ */
public $connection; public $connection;
...@@ -324,7 +325,7 @@ class Validator { ...@@ -324,7 +325,7 @@ class Validator {
{ {
if ( ! isset($parameters[1])) $parameters[1] = $attribute; if ( ! isset($parameters[1])) $parameters[1] = $attribute;
if (is_null($this->connection)) $this->connection = IoC::resolve('laravel.database')->connection(); if (is_null($this->connection)) $this->connection = Database::connection();
return $this->connection->table($parameters[0])->where($parameters[1], '=', $this->attributes[$attribute])->count() == 0; return $this->connection->table($parameters[0])->where($parameters[1], '=', $this->attributes[$attribute])->count() == 0;
} }
...@@ -417,11 +418,9 @@ class Validator { ...@@ -417,11 +418,9 @@ class Validator {
*/ */
protected function validate_mimes($attribute, $parameters) protected function validate_mimes($attribute, $parameters)
{ {
$file = IoC::container()->resolve('laravel.file');
foreach ($parameters as $extension) foreach ($parameters as $extension)
{ {
if ($file->is($extension, $this->attributes[$attribute]['tmp_name'])) return true; if (File::is($extension, $this->attributes[$attribute]['tmp_name'])) return true;
} }
return false; return false;
...@@ -458,7 +457,7 @@ class Validator { ...@@ -458,7 +457,7 @@ class Validator {
// the default error message for the appropriate units. // the default error message for the appropriate units.
if (in_array($rule, $this->size_rules) and ! $this->has_rule($attribute, $this->numeric_rules)) if (in_array($rule, $this->size_rules) and ! $this->has_rule($attribute, $this->numeric_rules))
{ {
return (array_key_exists($attribute, IoC::container()->resolve('laravel.input')->files())) return (array_key_exists($attribute, Input::files()))
? rtrim($message, '.').' '.Lang::line('validation.kilobytes')->get($this->language).'.' ? rtrim($message, '.').' '.Lang::line('validation.kilobytes')->get($this->language).'.'
: rtrim($message, '.').' '.Lang::line('validation.characters')->get($this->language).'.'; : rtrim($message, '.').' '.Lang::line('validation.characters')->get($this->language).'.';
} }
...@@ -546,7 +545,7 @@ class Validator { ...@@ -546,7 +545,7 @@ class Validator {
* @param Database\Connection $connection * @param Database\Connection $connection
* @return Validator * @return Validator
*/ */
public function connection(Database\Connection $connection) public function connection(\Laravel\Database\Connection $connection)
{ {
$this->connection = $connection; $this->connection = $connection;
return $this; return $this;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment