Browse Source

Merge remote-tracking branch 'origin/master'

Taylor Otwell 11 years ago
parent
commit
9c9b6eed10

+ 11 - 1
laravel/cache/drivers/file.php

@@ -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);
 	}
 	}
 
 
-}
+	/**
+	 * Flush the entire cache.
+	 *
+	 * @return void
+	 */
+	public function flush()
+	{
+		array_map('unlink', glob($this->path.'*'));
+	}
+
+}

+ 6 - 6
laravel/cache/drivers/redis.php

@@ -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()
-	 {
-	 	$this->redis->flushdb();
-	 }
+	public function flush()
+	{
+		$this->redis->flushdb();
+	}
 
 
 }
 }

+ 3 - 2
laravel/cli/artisan.php

@@ -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;

+ 2 - 2
laravel/database/eloquent/model.php

@@ -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 {
 		return call_user_func_array(array(new $model, $method), $parameters);
 		return call_user_func_array(array(new $model, $method), $parameters);
 	}
 	}
 
 
-}
+}

+ 38 - 1
laravel/database/schema/table.php

@@ -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 {
 		return $this->columns[] = new Fluent($parameters);
 		return $this->columns[] = new Fluent($parameters);
 	}
 	}
 
 
-}
+	/**
+	 * 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.");
+	}
+
+}

+ 10 - 1
laravel/documentation/ioc.md

@@ -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).
+
+<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');

+ 8 - 8
laravel/helpers.php

@@ -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)
  */
  */
 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)
  */
  */
 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())
  */
  */
 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())
 {
 {
 	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())
 {
 {
 	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())
  */
  */
 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|')
  */
  */
 function yield($section)
 function yield($section)
 {
 {
-	return Laravel\Section::yield($section);
+	return Section::yield($section);
 }
 }
 
 
 /**
 /**

+ 18 - 3
laravel/ioc.php

@@ -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 {
 	 * @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 {
 			$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 {
 			}
 			}
 			else
 			else
 			{
 			{
-				$dependencies[] = static::resolve($dependency->name);				
+				$dependencies[] = static::resolve($dependency->name);
 			}
 			}
 		}
 		}
 
 
@@ -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 {
 		{
 		{
 			throw new \Exception("Unresolvable dependency resolving [$parameter].");
 			throw new \Exception("Unresolvable dependency resolving [$parameter].");
 		}
 		}
-	}	
+	}
 
 
 }
 }

+ 14 - 0
laravel/tests/cases/ioc.test.php

@@ -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 {
 		$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));
+    }
+
 }
 }