Commit 120d6a5d authored by Taylor Otwell's avatar Taylor Otwell

Refactor the view class.

parent 3bf85e03
...@@ -134,11 +134,9 @@ class View { ...@@ -134,11 +134,9 @@ class View {
if (isset(static::$composers[$this->module][$this->view])) if (isset(static::$composers[$this->module][$this->view]))
{ {
$composer = static::$composers[$this->module][$this->view]; foreach ((array) static::$composers[$this->module][$this->view] as $key => $value)
if ( ! is_null($composer = $this->find_composer_function($composer)))
{ {
call_user_func($composer, $this); if (is_callable($value)) return call_user_func($value, $this);
} }
} }
} }
...@@ -158,28 +156,6 @@ class View { ...@@ -158,28 +156,6 @@ class View {
static::$composers[$module] = (file_exists($composers)) ? require $composers : array(); static::$composers[$module] = (file_exists($composers)) ? require $composers : array();
} }
/**
* Find the composer function in a composer definition.
*
* If the composer value itself is callable, it will be returned, otherwise the
* first callable value in the composer array will be returned. If the composer
* value is a string, it is simply a view name being defined.
*
* @param mixed $composer
* @return Closure
*/
private function find_composer_function($composer)
{
if (is_string($composer)) return;
if (is_callable($composer)) return $composer;
foreach ($composer as $key => $value)
{
if (is_callable($value)) return $value;
}
}
/** /**
* Get the parsed content of the view. * Get the parsed content of the view.
* *
...@@ -194,16 +170,6 @@ class View { ...@@ -194,16 +170,6 @@ class View {
throw new \Exception("View [$view] does not exist."); throw new \Exception("View [$view] does not exist.");
} }
// Before rendering the view, we need to spin through all of the bound data and
// evaluate any sub-views or responses that are present.
foreach ($this->data as &$data)
{
if ($data instanceof View or $data instanceof Response)
{
$data = (string) $data;
}
}
ob_start() and extract($this->data, EXTR_SKIP); ob_start() and extract($this->data, EXTR_SKIP);
try { include $this->path.$view.EXT; } catch (\Exception $e) { Error::handle($e); } try { include $this->path.$view.EXT; } catch (\Exception $e) { Error::handle($e); }
......
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