Refactor the view class.
This commit is contained in:
parent
3bf85e03a5
commit
120d6a5da6
|
@ -134,11 +134,9 @@ private function compose()
|
||||||
|
|
||||||
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 @@ private static function load_composers($module)
|
||||||
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 @@ public function get()
|
||||||
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); }
|
||||||
|
|
Loading…
Reference in New Issue