Merge branch 'develop' into feature/http-foundation
This commit is contained in:
commit
8e80756b08
|
@ -23,6 +23,7 @@ ## Laravel 3.2
|
|||
- Added "to_array" method to the base Eloquent model.
|
||||
- Added "$hidden" static variable to the base Eloquent model.
|
||||
- Added "sync" method to has_many_and_belongs_to Eloquent relationship.
|
||||
- Improved View performance by only loading contents from file once.
|
||||
|
||||
<a name="upgrade-3.2"></a>
|
||||
## Upgrading From 3.1
|
||||
|
|
|
@ -37,6 +37,13 @@ class View implements ArrayAccess {
|
|||
*/
|
||||
public static $names = array();
|
||||
|
||||
/**
|
||||
* The cache content of loaded view files.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $cache = array();
|
||||
|
||||
/**
|
||||
* The Laravel view loader event name.
|
||||
*
|
||||
|
@ -286,12 +293,7 @@ public static function render_each($view, array $data, $iterator, $empty = 'raw|
|
|||
*/
|
||||
public function render()
|
||||
{
|
||||
// To allow bundles or other pieces of the application to modify the
|
||||
// view before it is rendered, we'll fire an event, passing in the
|
||||
// view instance so it can modified.
|
||||
$composer = "laravel.composing: {$this->view}";
|
||||
|
||||
Event::fire($composer, array($this));
|
||||
Event::fire("laravel.composing: {$this->view}", array($this));
|
||||
|
||||
// If there are listeners to the view engine event, we'll pass them
|
||||
// the view so they can render it according to their needs, which
|
||||
|
@ -315,6 +317,11 @@ public function get()
|
|||
{
|
||||
$__data = $this->data();
|
||||
|
||||
// The contents of each view file is cached in an array for the
|
||||
// request since partial views may be rendered inside of for
|
||||
// loops which could incur performance penalties.
|
||||
$__contents = $this->load();
|
||||
|
||||
ob_start() and extract($__data, EXTR_SKIP);
|
||||
|
||||
// We'll include the view contents for parsing within a catcher
|
||||
|
@ -322,12 +329,12 @@ public function get()
|
|||
// will throw it out to the exception handler.
|
||||
try
|
||||
{
|
||||
include $this->path;
|
||||
eval('?>'.$__contents);
|
||||
}
|
||||
|
||||
// If we caught an exception, we'll silently flush the output
|
||||
// buffer so that no partially rendered views get thrown out
|
||||
// to the client and confuse the user.
|
||||
// to the client and confuse the user with junk.
|
||||
catch (\Exception $e)
|
||||
{
|
||||
ob_get_clean(); throw $e;
|
||||
|
@ -336,6 +343,23 @@ public function get()
|
|||
return ob_get_clean();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the contents of the view file from disk.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function load()
|
||||
{
|
||||
if (isset(static::$cache[$this->path]))
|
||||
{
|
||||
return static::$cache[$this->path];
|
||||
}
|
||||
else
|
||||
{
|
||||
return static::$cache[$this->path] = include $this->path;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the array of view data for the view instance.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue