Commit 2e1fed29 authored by Taylor Otwell's avatar Taylor Otwell

refactoring bootstrapping.

parent ca2c9882
...@@ -66,25 +66,6 @@ return array( ...@@ -66,25 +66,6 @@ return array(
'language' => 'en', 'language' => 'en',
/*
|--------------------------------------------------------------------------
| Auto-Loaded Packages
|--------------------------------------------------------------------------
|
| The packages that should be auto-loaded each time Laravel handles a
| request. These should generally be packages that you use on almost every
| request to your application.
|
| Each package specified here will be bootstrapped and can be conveniently
| used by your application's routes, models, and libraries.
|
| Note: The package names in this array should correspond to a package
| directory in application/packages.
|
*/
'libraries' => array(),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| SSL Link Generation | SSL Link Generation
......
...@@ -56,9 +56,13 @@ class Autoloader { ...@@ -56,9 +56,13 @@ class Autoloader {
$namespace = substr($class, 0, strpos($class, '\\')); $namespace = substr($class, 0, strpos($class, '\\'));
// If the namespace has been detected as a PSR-0 compliant library, // If the namespace has been registered as a PSR-0 compliant library, we will
// we will load the library according to those naming conventions. // load the library according to the PSR-0 naming standards, which state that
if (array_key_exists($namespace, static::$libraries)) // namespaces and underscores indicate the directory hierarchy of the class.
// The PSR-0 standard is exactly like the typical Laravel standard, the only
// difference being that Laravel files are all lowercase, while PSR-0 states
// that the file name should match the class name.
if (isset(static::$libraries[$namespace]))
{ {
return str_replace('_', '/', $file).EXT; return str_replace('_', '/', $file).EXT;
} }
...@@ -71,10 +75,12 @@ class Autoloader { ...@@ -71,10 +75,12 @@ class Autoloader {
} }
} }
// If the file exists according to the PSR-0 naming conventions, // If we could not find the class file in any of the auto-loaded locations
// we will add the namespace to the array of libraries and load // according to the Laravel naming standard, we will search the libraries
// the class according to the PSR-0 conventions. // directory for the class according to the PSR-0 naming standard. If the
if (file_exists($path = str_replace('_', '/', $file).EXT)) // file exists, we will add the class namespace to the array of registered
// libraries that are loaded following the PSR-0 standard.
if (file_exists($path = LIBRARY_PATH.str_replace('_', '/', $file).EXT))
{ {
static::$libraries[] = $namespace; static::$libraries[] = $namespace;
......
<?php
define('EXT', '.php');
define('BLADE_EXT', '.blade.php');
function constants($constants)
{
foreach ($constants as $key => $value)
{
if ( ! defined($key)) define($key, $value);
}
}
/**
* Register the core framework paths and all of the paths that
* derive from them. If any constant has already been defined,
* we will not attempt to define it again.
*/
$constants = array(
'APP_PATH' => realpath($application).'/',
'BASE_PATH' => realpath("$laravel/..").'/',
'PUBLIC_PATH' => realpath($public).'/',
'STORAGE_PATH' => realpath($storage).'/',
'SYS_PATH' => realpath($laravel).'/',
);
constants($constants);
unset($application, $public, $storage, $laravel);
$constants = array(
'CACHE_PATH' => STORAGE_PATH.'cache/',
'CONFIG_PATH' => APP_PATH.'config/',
'CONTROLLER_PATH' => APP_PATH.'controllers/',
'DATABASE_PATH' => STORAGE_PATH.'database/',
'LANG_PATH' => APP_PATH.'language/',
'LIBRARY_PATH' => APP_PATH.'libraries/',
'MODEL_PATH' => APP_PATH.'models/',
'ROUTE_PATH' => APP_PATH.'routes/',
'SESSION_PATH' => STORAGE_PATH.'sessions/',
'SYS_CONFIG_PATH' => SYS_PATH.'config/',
'SYS_VIEW_PATH' => SYS_PATH.'views/',
'VIEW_PATH' => APP_PATH.'views/',
);
constants($constants);
/**
* Register the core framework paths and all of the paths that
* derive from them. If any constant has already been defined,
* we will not attempt to define it again.
*/
$environment = (isset($_SERVER['LARAVEL_ENV'])) ? CONFIG_PATH.$_SERVER['LARAVEL_ENV'].'/' : '';
constants(array('ENV_CONFIG_PATH' => $environment));
unset($constants, $environment);
\ No newline at end of file
<?php namespace Laravel; <?php namespace Laravel;
require 'constants.php'; /**
* Define all of the constants used by the framework. All of the
* core paths will be defined, as well as all of the paths which
* derive from those core paths.
*/
define('EXT', '.php');
define('CRLF', chr(13).chr(10));
define('BLADE_EXT', '.blade.php');
define('APP_PATH', realpath($application).'/');
define('BASE_PATH', realpath("$laravel/..").'/');
define('PUBLIC_PATH', realpath($public).'/');
define('STORAGE_PATH', realpath($storage).'/');
define('SYS_PATH', realpath($laravel).'/');
define('CACHE_PATH', STORAGE_PATH.'cache/');
define('CONFIG_PATH', APP_PATH.'config/');
define('CONTROLLER_PATH', APP_PATH.'controllers/');
define('DATABASE_PATH', STORAGE_PATH.'database/');
define('LANG_PATH', APP_PATH.'language/');
define('LIBRARY_PATH', APP_PATH.'libraries/');
define('MODEL_PATH', APP_PATH.'models/');
define('ROUTE_PATH', APP_PATH.'routes/');
define('SESSION_PATH', STORAGE_PATH.'sessions/');
define('SYS_CONFIG_PATH', SYS_PATH.'config/');
define('SYS_VIEW_PATH', SYS_PATH.'views/');
define('VIEW_PATH', APP_PATH.'views/');
/**
* Define the Laravel environment configuration path. This path is
* used by the configuration class to load configuration options
* specific for the server environment.
*/
$environment = '';
if (isset($_SERVER['LARAVEL_ENV']))
{
$environment = CONFIG_PATH.$_SERVER['LARAVEL_ENV'].'/';
}
define('ENV_CONFIG_PATH', $environment);
unset($application, $public, $storage, $laravel, $environment);
/**
* Require all of the classes that can't be loaded by the auto-loader.
* These are typically classes that the auto-loader itself relies upon
* to load classes, such as the array and configuration classes.
*/
require SYS_PATH.'arr'.EXT; require SYS_PATH.'arr'.EXT;
require SYS_PATH.'config'.EXT; require SYS_PATH.'config'.EXT;
require SYS_PATH.'facades'.EXT; require SYS_PATH.'facades'.EXT;
require SYS_PATH.'container'.EXT; require SYS_PATH.'container'.EXT;
require SYS_PATH.'autoloader'.EXT; require SYS_PATH.'autoloader'.EXT;
/**
* Load a few of the core configuration files that are loaded for
* every request to the application. It is quicker to load them
* manually rather than parse the keys for every request.
*/
Config::load('application'); Config::load('application');
Config::load('container'); Config::load('container');
Config::load('session'); Config::load('session');
/**
* Bootstrap the application inversion of control container.
* The IoC container is responsible for resolving classes and
* their dependencies, and helps keep the framework flexible.
*/
IoC::bootstrap(); IoC::bootstrap();
/**
* Register the Autoloader's "load" method on the auto-loader stack.
* This method provides the lazy-loading of all class files, as well
* as any PSR-0 compliant libraries used by the application.
*/
spl_autoload_register(array('Laravel\\Autoloader', 'load')); spl_autoload_register(array('Laravel\\Autoloader', 'load'));
/**
* Define a few convenient functions to make our lives as
* developers a little more easy and enjoyable.
*/
function e($value) function e($value)
{ {
return HTML::entities($value); return HTML::entities($value);
......
...@@ -17,9 +17,9 @@ $message = function($e) ...@@ -17,9 +17,9 @@ $message = function($e)
}; };
/** /**
* Define a clousre that will return a more readable version * Define a closure that will return a more readable version of
* of the severity of an exception. This function will be used * the severity of an exception. This function will be used by
* by the error handler when parsing exceptions. * the error handler when parsing exceptions.
*/ */
$severity = function($e) $severity = function($e)
{ {
......
...@@ -64,24 +64,24 @@ class Input { ...@@ -64,24 +64,24 @@ class Input {
} }
/** /**
* Determine if the old input data contains an item. * Flash the input for the current request to the session.
* *
* @param string $key * @return void
* @return bool
*/ */
public static function had($key) public static function flash()
{ {
return ( ! is_null(static::old($key)) and trim((string) static::old($key)) !== ''); IoC::container()->core('session')->flash(Input::old_input, static::get());
} }
/** /**
* Flash the input for the current request to the session. * Determine if the old input data contains an item.
* *
* @return void * @param string $key
* @return bool
*/ */
public static function flash() public static function had($key)
{ {
IoC::container()->core('session')->flash(Input::old_input, static::get()); return ( ! is_null(static::old($key)) and trim((string) static::old($key)) !== '');
} }
/** /**
......
<?php namespace Laravel; <?php namespace Laravel;
define('CRLF', chr(13).chr(10));
class Redis { class Redis {
/** /**
......
...@@ -47,9 +47,6 @@ class View { ...@@ -47,9 +47,6 @@ class View {
/** /**
* Get the path to a given view on disk. * Get the path to a given view on disk.
* *
* The view may be either a "normal" view or a "Blade" view, so we will
* need to check the view directory for either extension.
*
* @param string $view * @param string $view
* @return string * @return string
*/ */
...@@ -57,6 +54,11 @@ class View { ...@@ -57,6 +54,11 @@ class View {
{ {
$view = str_replace('.', '/', $view); $view = str_replace('.', '/', $view);
// Application views take priority over system views, so we will return the
// application version of the view if both exists. Also, we need to check
// for Blade views using the Blade extension. The Blade extension gives
// an easy method of determining if the view should be compiled using
// the Blade compiler or if the view is plain PHP.
foreach (array(EXT, BLADE_EXT) as $extension) foreach (array(EXT, BLADE_EXT) as $extension)
{ {
if (file_exists($path = VIEW_PATH.$view.$extension)) if (file_exists($path = VIEW_PATH.$view.$extension))
...@@ -123,7 +125,9 @@ class View { ...@@ -123,7 +125,9 @@ class View {
/** /**
* Find the key for a view by name. * Find the key for a view by name.
* *
* The view "key" is the string that should be passed into the "make" method. * The view "key" is the string that should be passed into the "make" method and
* should correspond with the location of the view within the application views
* directory, such as "home.index" or "home/index".
* *
* @param string $name * @param string $name
* @return string * @return string
...@@ -209,7 +213,7 @@ class View { ...@@ -209,7 +213,7 @@ class View {
// since the last compiled version of the view was created or no // since the last compiled version of the view was created or no
// compiled view exists. Otherwise, the path will be returned // compiled view exists. Otherwise, the path will be returned
// without re-compiling. // without re-compiling.
if ((file_exists($compiled) and filemtime($this->path) > filemtime($compiled)) or ! file_exists($compiled)) if ( ! file_exists($compiled) or (filemtime($this->path) > filemtime($compiled)))
{ {
file_put_contents($compiled, Blade::compile($this->path)); file_put_contents($compiled, Blade::compile($this->path));
} }
......
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