diff --git a/application/config/aliases.php b/application/config/aliases.php index 6442e1b3..7338cf1b 100644 --- a/application/config/aliases.php +++ b/application/config/aliases.php @@ -29,7 +29,7 @@ 'Download' => 'Laravel\\Download', 'Eloquent' => 'Laravel\\Database\\Eloquent\\Model', 'Error' => 'Laravel\\Error', - 'File' => 'Laravel\\File', + 'File' => 'Laravel\\File_Facade', 'Form' => 'Laravel\\Form', 'Hasher' => 'Laravel\\Security\\Hasher', 'HTML' => 'Laravel\\HTML', diff --git a/application/views/error/404.php b/application/views/error/404.php index 0b5a5a59..3d497472 100644 --- a/application/views/error/404.php +++ b/application/views/error/404.php @@ -81,7 +81,7 @@

-

We couldn't find the resource you requested. Would you like go to our home page instead?

+

We couldn't find the resource you requested. Would you like go to our home page instead?

\ No newline at end of file diff --git a/laravel/application.php b/laravel/application.php index cedd7f60..c272e6c1 100644 --- a/laravel/application.php +++ b/laravel/application.php @@ -2,27 +2,6 @@ class Application { - /** - * The active request instance. - * - * @var Request - */ - public $request; - - /** - * The application configuration manager. - * - * @var Config - */ - public $config; - - /** - * The application session driver. - * - * @var Session\Driver - */ - public $session; - /** * The application IoC container. * diff --git a/laravel/asset.php b/laravel/asset.php index eaf5c0b1..7400a9b7 100644 --- a/laravel/asset.php +++ b/laravel/asset.php @@ -18,14 +18,6 @@ class Asset { * Containers provide a convenient method of grouping assets while maintaining * expressive code and a clean API. * - * - * // Get the default asset container - * $container = Asset::container(); - * - * // Get the "footer" asset container - * $container = Asset::container('footer'); - * - * * @param string $container * @return Asset_Container */ @@ -44,14 +36,6 @@ public static function container($container = 'default') * * This provides a convenient API, allowing the develop to skip the "container" * method when using the default container. - * - * - * // Add an asset to the default container - * Asset::add('jquery', 'js/jquery.js'); - * - * // Equivalent statement using the container method - * Asset::container()->add('jquery', 'js/jquery.js'); - * */ public static function __callStatic($method, $parameters) { @@ -101,14 +85,6 @@ public function __construct($name) * only link to the registered asset after its dependencies have been linked. * For example, you may wish to make jQuery UI dependent on jQuery. * - * - * // Add an asset to the container - * Asset::container()->add('jquery', 'js/jquery.js'); - * - * // Add an asset that is dependent on another asset - * Asset::container()->add('jquery-ui', 'js/jquery-ui.js', array('jquery')); - * - * * @param string $name * @param string $source * @param array $dependencies @@ -177,10 +153,6 @@ private function register($type, $name, $source, $dependencies, $attributes) /** * Get the links to all of the registered CSS assets. * - * - * echo Asset::container()->styles(); - * - * * @return string */ public function styles() @@ -191,10 +163,6 @@ public function styles() /** * Get the links to all of the registered JavaScript assets. * - * - * echo Asset::container()->scripts(); - * - * * @return string */ public function scripts() @@ -225,10 +193,6 @@ private function get_group($group) /** * Get the link to a single registered CSS asset. * - * - * echo Asset::container()->get_style('common'); - * - * * @param string $name * @return string */ @@ -240,10 +204,6 @@ public function get_style($name) /** * Get the link to a single registered JavaScript asset. * - * - * echo Asset::container()->get_script('jquery'); - * - * * @param string $name * @return string */ diff --git a/laravel/bootstrap.php b/laravel/bootstrap.php index d9940bc4..78dd34eb 100644 --- a/laravel/bootstrap.php +++ b/laravel/bootstrap.php @@ -40,38 +40,42 @@ $application = new Application; // -------------------------------------------------------------- -// Load the configuration manager and auto-loader. +// Load the configuration manager. // -------------------------------------------------------------- +require SYS_PATH.'facade'.EXT; require SYS_PATH.'loader'.EXT; require SYS_PATH.'config'.EXT; require SYS_PATH.'arr'.EXT; -$application->config = new Config; - -$paths = array(BASE_PATH, APP_PATH.'models/', APP_PATH.'libraries/'); - -$application->loader = new Loader($application->config->get('aliases'), $paths); - -spl_autoload_register(array($application->loader, 'load')); - -unset($paths); - // -------------------------------------------------------------- // Bootstrap the IoC container. // -------------------------------------------------------------- require SYS_PATH.'container'.EXT; -$application->container = new Container($application->config->get('container')); +$dependencies = require SYS_CONFIG_PATH.'container'.EXT; + +if (file_exists($path = CONFIG_PATH.'container'.EXT)) +{ + $dependencies = array_merge($dependencies, require $path); +} + +if (isset($_SERVER['LARAVEL_ENV']) and file_exists($path = CONFIG_PATH.$_SERVER['LARAVEL_ENV'].'/container'.EXT)) +{ + $dependencies = array_merge($dependencies, require $path); +} + +$application->container = new Container($dependencies); // -------------------------------------------------------------- -// Register the core application components in the container. +// Load the auto-loader. +// -------------------------------------------------------------- +spl_autoload_register(array($application->loader, 'load')); + +// -------------------------------------------------------------- +// Register the application in the container. // -------------------------------------------------------------- $application->container->instance('laravel.application', $application); -$application->container->instance('laravel.config', $application->config); - -$application->container->instance('laravel.loader', $application->loader); - // -------------------------------------------------------------- // Set the IoC container instance for use as a service locator. // -------------------------------------------------------------- diff --git a/laravel/cache/file.php b/laravel/cache/file.php index 8dcb0971..05e49137 100644 --- a/laravel/cache/file.php +++ b/laravel/cache/file.php @@ -3,9 +3,9 @@ class File extends Driver { /** - * The file manager instance. + * The file engine instance. * - * @var Laravel\File + * @var Laravel\File_Engine */ private $file; @@ -19,11 +19,11 @@ class File extends Driver { /** * Create a new File cache driver instance. * - * @param Laravel\File $file - * @param string $path + * @param Laravel\File_Engine $file + * @param string $path * @return void */ - public function __construct(\Laravel\File $file, $path) + public function __construct(\Laravel\File_Engine $file, $path) { $this->file = $file; $this->path = $path; diff --git a/laravel/config.php b/laravel/config.php index 8afd84e7..3a7d78c7 100644 --- a/laravel/config.php +++ b/laravel/config.php @@ -11,6 +11,24 @@ class Config { */ public $items = array(); + /** + * The paths containing the configuration files. + * + * @var array + */ + public $paths = array(); + + /** + * Create a new configuration manager instance. + * + * @param array $paths + * @return void + */ + public function __construct($paths) + { + $this->paths = $paths; + } + /** * Determine if a configuration item or file exists. * @@ -101,7 +119,7 @@ private function load($file) $config = array(); - foreach ($this->paths() as $directory) + foreach ($this->paths as $directory) { $config = (file_exists($path = $directory.$file.EXT)) ? array_merge($config, require $path) : $config; } @@ -114,27 +132,4 @@ private function load($file) return isset($this->items[$file]); } - /** - * Get the path hierarchy for a given configuration file and module. - * - * The paths returned by this method paths will be searched by the load method when merging - * configuration files, meaning the configuration files will cascade in this order. - * - * The system configuration directory will be searched first, followed by the application - * directory, and finally the environment directory. - * - * @return array - */ - private function paths() - { - $paths = array(SYS_CONFIG_PATH, CONFIG_PATH); - - if (isset($_SERVER['LARAVEL_ENV'])) - { - $paths[] = CONFIG_PATH.$_SERVER['LARAVEL_ENV'].'/'; - } - - return $paths; - } - } \ No newline at end of file diff --git a/laravel/config/container.php b/laravel/config/container.php index 334675f3..7cd8cb49 100644 --- a/laravel/config/container.php +++ b/laravel/config/container.php @@ -8,6 +8,25 @@ |-------------------------------------------------------------------------- */ + 'laravel.config' => array('singleton' => true, 'resolver' => function($container) + { + $paths = array(SYS_CONFIG_PATH, CONFIG_PATH); + + if (isset($_SERVER['LARAVEL_ENV'])) + { + $paths[] = CONFIG_PATH.$_SERVER['LARAVEL_ENV'].'/'; + } + + return new Config($paths); + }), + + + 'laravel.cookie' => array('singleton' => true, 'resolver' => function() + { + return new Cookie($_COOKIE); + }), + + 'laravel.database' => array('singleton' => true, 'resolver' => function($container) { $config = $container->resolve('laravel.config'); @@ -24,48 +43,72 @@ 'laravel.file' => array('singleton' => true, 'resolver' => function($container) { + require_once SYS_PATH.'file'.EXT; + return new File($container->resolve('laravel.config')->get('mimes')); }), 'laravel.input' => array('singleton' => true, 'resolver' => function($container) { + require_once SYS_PATH.'input'.EXT; + $application = $container->resolve('laravel.application'); $input = array(); - if ($application->request->method == 'GET') + if ($application->request->method() == 'GET') { $input = $_GET; } - elseif ($application->request->method == 'POST') + elseif ($application->request->method() == 'POST') { $input = $_POST; } - elseif ($application->request->method == 'PUT' or $application->request->method == 'DELETE') + elseif ($application->request->method() == 'PUT' or $application->request->method == 'DELETE') { - ($application->request->spoofed) ? $input = $_POST : parse_str(file_get_contents('php://input'), $input); + ($application->request->spoofed()) ? $input = $_POST : parse_str(file_get_contents('php://input'), $input); } - return new Input($input, $_FILES, new Cookie($_COOKIE)); + return new Input_Engine($input, $_FILES, $container->resolve('laravel.cookie')); }), 'laravel.lang' => array('singleton' => true, 'resolver' => function($container) { - return new Lang($container->resolve('laravel.config')->get('application.language'), array(SYS_LANG_PATH, LANG_PATH)); + require_once SYS_PATH.'lang'.EXT; + + return new Lang_Engine($container->resolve('laravel.config')->get('application.language'), array(SYS_LANG_PATH, LANG_PATH)); + }), + + + 'laravel.loader' => array('singleton' => true, 'resolver' => function($container) + { + $paths = array(BASE_PATH, APP_PATH.'models/', APP_PATH.'libraries/'); + + return new Loader($container->resolve('laravel.config')->get('aliases'), $paths); }), 'laravel.package' => array('singleton' => true, 'resolver' => function() { - return new Package; + return new Package_Engine(PACKAGE_PATH); }), 'laravel.redirect' => array('singleton' => true, 'resolver' => function($container) { - return new Redirect($container->resolve('laravel.session.driver'), $container->resolve('laravel.url')); + require_once SYS_PATH.'redirect'.EXT; + + return new Redirect_Engine($container->resolve('laravel.url')); + }), + + + 'laravel.request' => array('singleton' => true, 'resolver' => function($container) + { + require_once SYS_PATH.'request'.EXT; + + return new Request_Engine($_SERVER, $container->resolve('laravel.config')->get('application.url')); }), @@ -83,15 +126,29 @@ }), + 'laravel.session' => array('singleton' => true, 'resolver' => function($container) + { + return $container->resolve('laravel.session.manager')->driver($container->resolve('laravel.config')->get('session.driver')); + }), + + + 'laravel.session.manager' => array('singleton' => true, 'resolver' => function($container) + { + return new Session\Manager($container); + }), + + 'laravel.url' => array('singleton' => true, 'resolver' => function($container) { - $request = $container->resolve('laravel.request'); + require_once SYS_PATH.'url'.EXT; - $base = $container->resolve('laravel.config')->get('application.url'); + list($request, $base, $index) = array( + $container->resolve('laravel.request'), + $container->resolve('laravel.config')->get('application.url'), + $container->resolve('laravel.config')->get('application.index'), + ); - $index = $container->resolve('laravel.config')->get('application.index'); - - return new URL($container->resolve('laravel.router'), $base, $index, $request->secure); + return new URL_Engine($container->resolve('laravel.router'), $base, $index, $request->secure()); }), diff --git a/laravel/download.php b/laravel/download.php index 3edf1f22..076afbab 100644 --- a/laravel/download.php +++ b/laravel/download.php @@ -1,16 +1,18 @@ resolve('laravel.'.static::$resolve), $method), $parameters); + } + +} \ No newline at end of file diff --git a/laravel/file.php b/laravel/file.php index 1b678810..41a084b9 100644 --- a/laravel/file.php +++ b/laravel/file.php @@ -1,5 +1,7 @@ html->entities($this->url->to(((is_null($action)) ? $this->request->uri : $action), $https)); + return $this->html->entities($this->url->to(((is_null($action)) ? $this->request->uri() : $action), $https)); } /** diff --git a/laravel/input.php b/laravel/input.php index ff5a229f..36a6cb4c 100644 --- a/laravel/input.php +++ b/laravel/input.php @@ -1,6 +1,8 @@ resolve('laravel.session.driver'); + $driver = IoC::container()->resolve('laravel.session'); return Arr::get($driver->get('laravel_old_input', array()), $key, $default); } diff --git a/laravel/lang.php b/laravel/lang.php index 0cb9dc32..a358ffcb 100644 --- a/laravel/lang.php +++ b/laravel/lang.php @@ -1,6 +1,8 @@ line_language.$file], $line, $default); + $line = Arr::get($this->lines[$this->line_language.$file], $line, $default); foreach ($this->replacements as $key => $value) { @@ -138,7 +140,7 @@ private function parse($key) */ private function load($file) { - if (isset(static::$lines[$this->line_language.$file])) return; + if (isset($this->lines[$this->line_language.$file])) return; $language = array(); @@ -152,10 +154,10 @@ private function load($file) if (count($language) > 0) { - static::$lines[$this->line_language.$file] = $language; + $this->lines[$this->line_language.$file] = $language; } - return isset(static::$lines[$this->line_language.$file]); + return isset($this->lines[$this->line_language.$file]); } /** diff --git a/laravel/laravel.php b/laravel/laravel.php index 09617eee..d4d52ea1 100644 --- a/laravel/laravel.php +++ b/laravel/laravel.php @@ -42,22 +42,11 @@ // -------------------------------------------------------------- date_default_timezone_set($application->config->get('application.timezone')); -// -------------------------------------------------------------- -// Initialize the request instance for the request. -// -------------------------------------------------------------- -$application->request = new Request($_SERVER, $application->config->get('application.url')); - -$application->container->instance('laravel.request', $application->request); - // -------------------------------------------------------------- // Load the session and session manager. // -------------------------------------------------------------- if ($application->config->get('session.driver') !== '') { - $application->session = Session\Manager::driver($application->container, $application->config->get('session.driver')); - - $application->container->instance('laravel.session.driver', $application->session); - $application->session->start($application->input->cookies->get('laravel_session'), $application->config->get('session.lifetime')); } @@ -76,7 +65,7 @@ // -------------------------------------------------------------- // Route the request and get the response from the route. // -------------------------------------------------------------- -$route = $application->container->resolve('laravel.router')->route(); +$route = $application->router->route(); if ( ! is_null($route)) { @@ -86,7 +75,7 @@ } else { - $response = new Error('404'); + $response = $application->response->error('404'); } // -------------------------------------------------------------- @@ -97,7 +86,7 @@ // -------------------------------------------------------------- // Close the session. // -------------------------------------------------------------- -if ( ! is_null($application->session)) +if ($application->config->get('session.driver') !== '') { $application->session->close($application->input, $application->config->get('session')); } diff --git a/laravel/loader.php b/laravel/loader.php index ebc4f6c2..2a7a4a7f 100644 --- a/laravel/loader.php +++ b/laravel/loader.php @@ -40,6 +40,8 @@ public function load($class) { $file = strtolower(str_replace('\\', '/', $class)); + if (strpos($file, 'laravel') !== false) $file = str_replace('_facade', '', $file); + if (array_key_exists($class, $this->aliases)) { return class_alias($this->aliases[$class], $class); @@ -49,7 +51,7 @@ public function load($class) { if (file_exists($path = $directory.$file.EXT)) { - require $path; + require_once $path; return; } diff --git a/laravel/package.php b/laravel/package.php index f77beb81..1a502d5b 100644 --- a/laravel/package.php +++ b/laravel/package.php @@ -1,6 +1,8 @@ - * // Load the "swift-mailer" package - * Package::load('swift-mailer'); - * - * // Load the "swift-mailer" and "facebook" package - * Package::load(array('swift-mailer', 'facebook')); - * - * * @param string|array $packages * @param string $path * @return void */ - public function load($packages, $path = PACKAGE_PATH) + public function load($packages, $path) { foreach ((array) $packages as $package) { @@ -42,11 +36,6 @@ public function load($packages, $path = PACKAGE_PATH) /** * Determine if a given package has been loaded. * - * - * // Determine if the "swift-mailer" package has been loaded - * $loaded = Package::loaded('swift-mailer'); - * - * * @param string $package * @return bool */ diff --git a/laravel/redirect.php b/laravel/redirect.php index dd335fa9..a8bfcac8 100644 --- a/laravel/redirect.php +++ b/laravel/redirect.php @@ -1,6 +1,8 @@ url = $url; - $this->session = $session; } /** @@ -78,7 +72,7 @@ public function to_secure($url, $status = 302, $method = 'location') */ public function with($key, $value) { - $this->session->flash($key, $value); + IoC::container()->resolve('laravel.session')->flash($key, $value); return $this; } diff --git a/laravel/request.php b/laravel/request.php index 3dfcb6d4..7da5736f 100644 --- a/laravel/request.php +++ b/laravel/request.php @@ -1,55 +1,8 @@ url = $url; $this->server = $server; - - $this->uri = $this->uri($url); - - foreach (array('method', 'spoofed', 'ip', 'secure', 'ajax') as $item) - { - $this->$item = $this->$item(); - } } /** @@ -94,10 +48,9 @@ public function __construct($server, $url) * to determine the URI using the REQUEST_URI variable. If neither are available, an exception * will be thrown by the method. * - * @param string $url * @return string */ - private function uri($url) + public function uri() { if (isset($this->server['PATH_INFO'])) { @@ -114,7 +67,7 @@ private function uri($url) if ($uri === false) throw new \Exception('Malformed request URI. Request terminated.'); - foreach (array(parse_url($url, PHP_URL_PATH), '/index.php') as $value) + foreach (array(parse_url($this->url, PHP_URL_PATH), '/index.php') as $value) { $uri = (strpos($uri, $value) === 0) ? substr($uri, strlen($value)) : $uri; } @@ -131,7 +84,7 @@ private function uri($url) * * @return string */ - private function method() + public function method() { return ($this->spoofed()) ? $_POST['REQUEST_METHOD'] : $this->server['REQUEST_METHOD']; } @@ -143,7 +96,7 @@ private function method() * * @return bool */ - private function spoofed() + public function spoofed() { return is_array($_POST) and array_key_exists('REQUEST_METHOD', $_POST); } @@ -153,7 +106,7 @@ private function spoofed() * * @return string */ - private function ip() + public function ip() { if (isset($this->server['HTTP_X_FORWARDED_FOR'])) { @@ -174,7 +127,7 @@ private function ip() * * @return string */ - private function protocol() + public function protocol() { return (isset($this->server['HTTPS']) and $this->server['HTTPS'] !== 'off') ? 'https' : 'http'; } @@ -184,7 +137,7 @@ private function protocol() * * @return bool */ - private function secure() + public function secure() { return ($this->protocol() == 'https'); } @@ -194,7 +147,7 @@ private function secure() * * @return bool */ - private function ajax() + public function ajax() { if ( ! isset($this->server['HTTP_X_REQUESTED_WITH'])) return false; diff --git a/laravel/response.php b/laravel/response.php index fcbc7996..d542d1ca 100644 --- a/laravel/response.php +++ b/laravel/response.php @@ -57,8 +57,6 @@ public function view($view, $data = array()) */ public function error($code, $data = array()) { - $data['homepage'] = IoC::resolve('laravel.config')->get('application.url'); - return new Response($this->view->make('error/'.$code, $data), $code); } @@ -154,6 +152,34 @@ public function __construct($content, $status = 200) $this->status = $status; } + /** + * Create a new response instance. + * + * @param mixed $content + * @param int $status + * @return Response + */ + public static function make($content, $status = 200) + { + return IoC::container()->resolve('laravel.response')->make($content, $status); + } + + /** + * Create a new error response instance. + * + * The response status code will be set using the specified code. + * + * Note: The specified error code should correspond to a view in your views/error directory. + * + * @param int $code + * @param array $data + * @return Response + */ + public static function error($code, $data = array()) + { + return IoC::container()->resolve('laravel.response')->error($code, $data); + } + /** * Get the evaluated string contents of the response. * diff --git a/laravel/routing/router.php b/laravel/routing/router.php index 715d2007..ce2148e2 100644 --- a/laravel/routing/router.php +++ b/laravel/routing/router.php @@ -1,6 +1,6 @@ routes = $routes; $this->request = $request; @@ -51,14 +51,6 @@ public function __construct(Request $request, $routes, $controller_path) * * The returned array will be identical the array defined in the routes.php file. * - * - * // Find the "login" named route - * $route = $router->find('login'); - * - * // Find the "login" named route through the IoC container - * $route = IoC::resolve('laravel.routing.router')->find('login'); - * - * * @param string $name * @return array */ @@ -92,7 +84,7 @@ public function route() { // Put the request method and URI in route form. Routes begin with // the request method and a forward slash. - $destination = $this->request->method.' /'.trim($this->request->uri, '/'); + $destination = $this->request->method().' /'.trim($this->request->uri(), '/'); // Check for a literal route match first. If we find one, there is // no need to spin through all of the routes. @@ -129,7 +121,7 @@ public function route() */ protected function route_to_controller() { - $segments = explode('/', trim($this->request->uri, '/')); + $segments = explode('/', trim($this->request->uri(), '/')); if ( ! is_null($key = $this->controller_key($segments))) { diff --git a/laravel/session/cookie.php b/laravel/session/cookie.php index e576a2c4..9e8dc735 100644 --- a/laravel/session/cookie.php +++ b/laravel/session/cookie.php @@ -7,7 +7,7 @@ class Cookie extends Driver { /** * The cookie engine instance. * - * @var Cookie_Engine + * @var Cookie */ private $cookie; @@ -28,9 +28,9 @@ class Cookie extends Driver { /** * Create a new Cookie session driver instance. * - * @param Crypter $crypter + * @param Crypter $crypter * @param Laravel\Cookie $cookie - * @param array $config + * @param array $config * @return void */ public function __construct(Crypter $crypter, \Laravel\Cookie $cookie, $config) diff --git a/laravel/session/driver.php b/laravel/session/driver.php index 3025dbcf..ac8b3943 100644 --- a/laravel/session/driver.php +++ b/laravel/session/driver.php @@ -1,7 +1,7 @@ flash('laravel_old_input', $input->get())->age(); @@ -242,7 +242,7 @@ protected function age() * already been sent to the browser. * * @param Laravel\Cookie $cookie - * @param array $config + * @param array $config * @return void */ protected function write_cookie(Cookie $cookies, $config) diff --git a/laravel/session/file.php b/laravel/session/file.php index c027b16b..4f8eb9c4 100644 --- a/laravel/session/file.php +++ b/laravel/session/file.php @@ -3,9 +3,9 @@ class File extends Driver implements Sweeper { /** - * The file manager instance. + * The file engine instance. * - * @var Laravel\File + * @var Laravel\File_Engine */ private $file; @@ -19,11 +19,11 @@ class File extends Driver implements Sweeper { /** * Create a new File session driver instance. * - * @param Laravel\File $file - * @param string $path + * @param Laravel\File_Engine $file + * @param string $path * @return void */ - public function __construct(\Laravel\File $file, $path) + public function __construct(\Laravel\File_Engine $file, $path) { $this->file = $file; $this->path = $path; diff --git a/laravel/session/manager.php b/laravel/session/manager.php index df126cd4..688410b3 100644 --- a/laravel/session/manager.php +++ b/laravel/session/manager.php @@ -1,10 +1,27 @@ container = $container; + } + /** * Get the session driver. * @@ -12,15 +29,14 @@ class Manager { * file. Only one session driver may be active for a given request, so the driver will * be managed as a singleton. * - * @param Container $container * @param string $driver * @return Session\Driver */ - public static function driver(Container $container, $driver) + public static function driver($driver) { if (in_array($driver, array('cookie', 'file', 'database', 'apc', 'memcached'))) { - return $container->resolve('laravel.session.'.$driver); + return $this->container->resolve('laravel.session.'.$driver); } throw new \Exception("Session driver [$driver] is not supported."); diff --git a/laravel/url.php b/laravel/url.php index 76fd08d7..b9e80751 100644 --- a/laravel/url.php +++ b/laravel/url.php @@ -1,6 +1,8 @@ resolve('laravel.view')->make($view, $data); + } + /** * Get the evaluated string content of the view. *