Commit 9c9b6eed authored by Taylor Otwell's avatar Taylor Otwell

Merge remote-tracking branch 'origin/master'

parents 5ddeab60 0008a232
...@@ -97,4 +97,14 @@ class File extends Driver { ...@@ -97,4 +97,14 @@ class File extends Driver {
if (file_exists($this->path.$key)) @unlink($this->path.$key); if (file_exists($this->path.$key)) @unlink($this->path.$key);
} }
} /**
\ No newline at end of file * Flush the entire cache.
*
* @return void
*/
public function flush()
{
array_map('unlink', glob($this->path.'*'));
}
}
...@@ -87,15 +87,15 @@ class Redis extends Driver { ...@@ -87,15 +87,15 @@ class Redis extends Driver {
{ {
$this->redis->del($key); $this->redis->del($key);
} }
/** /**
* Flush the entire cache. * Flush the entire cache.
* *
* @return void * @return void
*/ */
public function flush() public function flush()
{ {
$this->redis->flushdb(); $this->redis->flushdb();
} }
} }
...@@ -43,7 +43,8 @@ try ...@@ -43,7 +43,8 @@ try
} }
catch (\Exception $e) catch (\Exception $e)
{ {
echo $e->getMessage(); echo $e->getMessage().PHP_EOL;
exit(1);
} }
echo PHP_EOL; echo PHP_EOL;
\ No newline at end of file
...@@ -517,7 +517,7 @@ abstract class Model { ...@@ -517,7 +517,7 @@ abstract class Model {
foreach ($this->attributes as $key => $value) foreach ($this->attributes as $key => $value)
{ {
if ( ! array_key_exists($key, $this->original) or $value != $this->original[$key]) if ( ! array_key_exists($key, $this->original) or $value !== $this->original[$key])
{ {
$dirty[$key] = $value; $dirty[$key] = $value;
} }
...@@ -795,4 +795,4 @@ abstract class Model { ...@@ -795,4 +795,4 @@ abstract class Model {
return call_user_func_array(array(new $model, $method), $parameters); return call_user_func_array(array(new $model, $method), $parameters);
} }
} }
\ No newline at end of file
...@@ -39,6 +39,25 @@ class Table { ...@@ -39,6 +39,25 @@ class Table {
*/ */
public $commands = array(); public $commands = array();
/**
* The registered custom macros.
*
* @var array
*/
public static $macros = array();
/**
* Registers a custom macro.
*
* @param string $name
* @param Closure $macro
* @return void
*/
public static function macro($name, $macro)
{
static::$macros[$name] = $macro;
}
/** /**
* Create a new schema table instance. * Create a new schema table instance.
* *
...@@ -422,4 +441,22 @@ class Table { ...@@ -422,4 +441,22 @@ class Table {
return $this->columns[] = new Fluent($parameters); return $this->columns[] = new Fluent($parameters);
} }
} /**
\ No newline at end of file * Dynamically handle calls to custom macros.
*
* @param string $method
* @param array $parameters
* @return mixed
*/
public function __call($method, $parameters)
{
if (isset(static::$macros[$method]))
{
array_unshift($parameters, $this);
return call_user_func_array(static::$macros[$method], $parameters);
}
throw new \Exception("Method [$method] does not exist.");
}
}
...@@ -46,4 +46,13 @@ Now that we have SwiftMailer registered in the container, we can resolve it usin ...@@ -46,4 +46,13 @@ Now that we have SwiftMailer registered in the container, we can resolve it usin
$mailer = IoC::resolve('mailer'); $mailer = IoC::resolve('mailer');
> **Note:** You may also [register controllers in the container](/docs/controllers#dependency-injection). > **Note:** You may also [register controllers in the container](/docs/controllers#dependency-injection).
\ No newline at end of file
<a name="unregister"></a>
## Unregister an existing instance
For test purposes sometimes you need to unregister some container.
#### Unregister example mail class:
IoC::unregister('mailer');
\ No newline at end of file
...@@ -328,7 +328,7 @@ function head($array) ...@@ -328,7 +328,7 @@ function head($array)
*/ */
function url($url = '', $https = null) function url($url = '', $https = null)
{ {
return Laravel\URL::to($url, $https); return URL::to($url, $https);
} }
/** /**
...@@ -340,7 +340,7 @@ function url($url = '', $https = null) ...@@ -340,7 +340,7 @@ function url($url = '', $https = null)
*/ */
function asset($url, $https = null) function asset($url, $https = null)
{ {
return Laravel\URL::to_asset($url, $https); return URL::to_asset($url, $https);
} }
/** /**
...@@ -360,7 +360,7 @@ function asset($url, $https = null) ...@@ -360,7 +360,7 @@ function asset($url, $https = null)
*/ */
function action($action, $parameters = array()) function action($action, $parameters = array())
{ {
return Laravel\URL::to_action($action, $parameters); return URL::to_action($action, $parameters);
} }
/** /**
...@@ -380,7 +380,7 @@ function action($action, $parameters = array()) ...@@ -380,7 +380,7 @@ function action($action, $parameters = array())
*/ */
function route($name, $parameters = array()) function route($name, $parameters = array())
{ {
return Laravel\URL::to_route($name, $parameters); return URL::to_route($name, $parameters);
} }
/** /**
...@@ -523,7 +523,7 @@ function view($view, $data = array()) ...@@ -523,7 +523,7 @@ function view($view, $data = array())
{ {
if (is_null($view)) return ''; if (is_null($view)) return '';
return Laravel\View::make($view, $data); return View::make($view, $data);
} }
/** /**
...@@ -537,7 +537,7 @@ function render($view, $data = array()) ...@@ -537,7 +537,7 @@ function render($view, $data = array())
{ {
if (is_null($view)) return ''; if (is_null($view)) return '';
return Laravel\View::make($view, $data)->render(); return View::make($view, $data)->render();
} }
/** /**
...@@ -551,7 +551,7 @@ function render($view, $data = array()) ...@@ -551,7 +551,7 @@ function render($view, $data = array())
*/ */
function render_each($partial, array $data, $iterator, $empty = 'raw|') function render_each($partial, array $data, $iterator, $empty = 'raw|')
{ {
return Laravel\View::render_each($partial, $data, $iterator, $empty); return View::render_each($partial, $data, $iterator, $empty);
} }
/** /**
...@@ -562,7 +562,7 @@ function render_each($partial, array $data, $iterator, $empty = 'raw|') ...@@ -562,7 +562,7 @@ function render_each($partial, array $data, $iterator, $empty = 'raw|')
*/ */
function yield($section) function yield($section)
{ {
return Laravel\Section::yield($section); return Section::yield($section);
} }
/** /**
......
...@@ -31,6 +31,19 @@ class IoC { ...@@ -31,6 +31,19 @@ class IoC {
static::$registry[$name] = compact('resolver', 'singleton'); static::$registry[$name] = compact('resolver', 'singleton');
} }
/**
* Unregister an object
*
* @param string $name
*/
public static function unregister($name)
{
if (array_key_exists($name, static::$registry)) {
unset(static::$registry[$name]);
unset(static::$singletons[$name]);
}
}
/** /**
* Determine if an object has been registered in the container. * Determine if an object has been registered in the container.
* *
...@@ -141,6 +154,7 @@ class IoC { ...@@ -141,6 +154,7 @@ class IoC {
* @param string $type * @param string $type
* @param array $parameters * @param array $parameters
* @return mixed * @return mixed
* @throws \Exception
*/ */
protected static function build($type, $parameters = array()) protected static function build($type, $parameters = array())
{ {
...@@ -193,7 +207,7 @@ class IoC { ...@@ -193,7 +207,7 @@ class IoC {
$dependency = $parameter->getClass(); $dependency = $parameter->getClass();
// If the person passed in some parameters to the class // If the person passed in some parameters to the class
// then we should probably use those instead of trying // then we should probably use those instead of trying
// to resolve a new instance of the class // to resolve a new instance of the class
if (count($arguments) > 0) if (count($arguments) > 0)
{ {
...@@ -205,7 +219,7 @@ class IoC { ...@@ -205,7 +219,7 @@ class IoC {
} }
else else
{ {
$dependencies[] = static::resolve($dependency->name); $dependencies[] = static::resolve($dependency->name);
} }
} }
...@@ -218,6 +232,7 @@ class IoC { ...@@ -218,6 +232,7 @@ class IoC {
* *
* @param ReflectionParameter * @param ReflectionParameter
* @return default value * @return default value
* @throws \Exception
*/ */
protected static function resolveNonClass($parameter) protected static function resolveNonClass($parameter)
{ {
...@@ -229,6 +244,6 @@ class IoC { ...@@ -229,6 +244,6 @@ class IoC {
{ {
throw new \Exception("Unresolvable dependency resolving [$parameter]."); throw new \Exception("Unresolvable dependency resolving [$parameter].");
} }
} }
} }
\ No newline at end of file
...@@ -28,6 +28,7 @@ class TestClassTwoForIoC ...@@ -28,6 +28,7 @@ class TestClassTwoForIoC
} }
} }
use \Laravel\IoC as IoC;
class IoCTest extends PHPUnit_Framework_TestCase { class IoCTest extends PHPUnit_Framework_TestCase {
...@@ -150,4 +151,17 @@ class IoCTest extends PHPUnit_Framework_TestCase { ...@@ -150,4 +151,17 @@ class IoCTest extends PHPUnit_Framework_TestCase {
$this->assertEquals(42, $class_two->class_one->test_variable); $this->assertEquals(42, $class_two->class_one->test_variable);
} }
public function testCanUnregisterRegistered()
{
$testClass = 'test';
IoC::register($testClass, function() {});
$this->assertTrue(IoC::registered($testClass));
IoC::unregister($testClass);
$this->assertFalse(IoC::registered($testClass));
}
} }
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