Browse Source

refactoring various classes.

Taylor Otwell 12 years ago
parent
commit
994949c6ce
6 changed files with 53 additions and 28 deletions
  1. 1 2
      .gitignore
  2. 2 2
      laravel/autoloader.php
  3. 1 1
      laravel/laravel.php
  4. 19 6
      laravel/routing/router.php
  5. 25 12
      laravel/session/payload.php
  6. 5 5
      laravel/validator.php

+ 1 - 2
.gitignore

@@ -1,2 +1 @@
-favicon.*
-.DS_Store
+favicon.*

+ 2 - 2
laravel/autoloader.php

@@ -53,8 +53,8 @@ class Autoloader {
 	protected static function find($class)
 	{
 		// After PHP namespaces were introduced, most libaries ditched underscores for
-		// namespaces to indicate the class directory hierarchy. We will check for the
-		// presence of namespace slashes to determine the directory separator.
+		// for namespaces to indicate the class directory hierarchy. We will check for
+		// the presence of namespace slashes to determine the directory separator.
 		$separator = (strpos($class, '\\') !== false) ? '\\' : '_';
 
 		$library = substr($class, 0, strpos($class, $separator));

+ 1 - 1
laravel/laravel.php

@@ -221,7 +221,7 @@ else
  */
 if (Config::$items['session']['driver'] !== '')
 {
-	IoC::core('session')->save($driver);
+	IoC::core('session')->save();
 }
 
 $response->send();

+ 19 - 6
laravel/routing/router.php

@@ -90,6 +90,9 @@ class Router {
 	{
 		if (array_key_exists($name, $this->names)) return $this->names[$name];
 
+		// To find a named route, we need to iterate through every route defined
+		// for the application. We will cache the routes by name so we can load
+		// them very quickly if we need to find them a second time.
 		foreach ($this->loader->everything() as $key => $value)
 		{
 			if (is_array($value) and isset($value['name']) and $value['name'] === $name)
@@ -180,13 +183,16 @@ class Router {
 
 		if ( ! is_null($key = $this->controller_key($segments)))
 		{
-			// Extract the controller name from the URI segments.
+			// Extract the various parts of the controller call from the URI.
+			// First, we'll extract the controller name, then, since we need
+			// to extract the method and parameters, we will remove the name
+			// of the controller from the URI. Then we can shift the method
+			// off of the array of segments. Any remaining segments are the
+			// parameters that should be passed to the controller method.
 			$controller = implode('.', array_slice($segments, 0, $key));
 
-			// Remove the controller name from the URI.
 			$segments = array_slice($segments, $key);
 
-			// Extract the controller method from the remaining segments.
 			$method = (count($segments) > 0) ? array_shift($segments) : 'index';
 
 			return new Route($destination, $controller.'@'.$method, $segments);
@@ -206,6 +212,9 @@ class Router {
 	 */
 	protected function controller_key($segments)
 	{
+		// To find the proper controller, we need to iterate backwards through
+		// the URI segments and take the first file that matches. That file
+		// should be the deepest controller matched by the URI.
 		foreach (array_reverse($segments, true) as $key => $value)
 		{
 			$controller = implode('/', array_slice($segments, 0, $key + 1)).EXT;
@@ -225,14 +234,14 @@ class Router {
 	 */
 	protected function wildcards($key)
 	{
-		$replacements = 0;
+		$count = 0;
 
 		// For optional parameters, first translate the wildcards to their
 		// regex equivalent, sans the ")?" ending. We will add the endings
 		// back on after we know how many replacements we made.
-		$key = str_replace(array_keys($this->optional), array_values($this->optional), $key, $replacements);
+		$key = str_replace(array_keys($this->optional), array_values($this->optional), $key, $count);
 
-		$key .= ($replacements > 0) ? str_repeat(')?', $replacements) : '';
+		$key .= ($count > 0) ? str_repeat(')?', $count) : '';
 
 		return str_replace(array_keys($this->patterns), array_values($this->patterns), $key);
 	}
@@ -254,6 +263,10 @@ class Router {
 
 		$parameters = array();
 
+		// To find the parameters that should be passed to the route, we will
+		// iterate through the route segments, and if the segment is enclosed
+		// in parentheses, we will take the matching segment from the request
+		// URI and add it to the array of parameters.
 		for ($i = 0; $i < $count; $i++)
 		{
 			if (preg_match('/\(.+\)/', $route[$i]) and isset($uri[$i]))

+ 25 - 12
laravel/session/payload.php

@@ -30,18 +30,32 @@ class Payload {
 	protected $exists = true;
 
 	/**
-	 * Start the session handling for the current request.
+	 * The session driver used to retrieve and store the session payload.
+	 *
+	 * @var Driver
+	 */
+	protected $driver;
+
+	/**
+	 * Create a new session payload instance.
 	 *
 	 * @param  Driver  $driver
+	 * @return void
+	 */
+	public function __construct(Driver $driver)
+	{
+		$this->driver = $driver;
+	}
+
+	/**
+	 * Load the session for the current request.
+	 *
 	 * @param  string  $id
 	 * @return void
 	 */
-	public function __construct(Driver $driver, $id)
+	public function load($id)
 	{
-		if ( ! is_null($id))
-		{
-			$this->session = $driver->load($id);
-		}
+		if ( ! is_null($id)) $this->session = $this->driver->load($id);
 
 		// If the session doesn't exist or is invalid, we will create a new session
 		// array and mark the session as being non-existent. Some drivers, such as
@@ -64,7 +78,7 @@ class Payload {
 		if ( ! $this->has('csrf_token'))
 		{
 			$this->put('csrf_token', Str::random(40));
-		}
+		}		
 	}
 
 	/**
@@ -236,10 +250,9 @@ class Payload {
 	/**
 	 * Store the session payload in storage.
 	 *
-	 * @param  Driver  $driver
 	 * @return void
 	 */
-	public function save(Driver $driver)
+	public function save()
 	{
 		$this->session['last_activity'] = time();
 
@@ -247,7 +260,7 @@ class Payload {
 
 		$config = Config::$items['session'];
 
-		$driver->save($this->session, $config, $this->exists);
+		$this->driver->save($this->session, $config, $this->exists);
 
 		$this->cookie();
 
@@ -258,9 +271,9 @@ class Payload {
 		// occuring is controlled by the "sweepage" configuration option.
 		$sweepage = $config['sweepage'];
 
-		if ($driver instanceof Sweeper and (mt_rand(1, $sweepage[1]) <= $sweepage[0]))
+		if ($this->driver instanceof Sweeper and (mt_rand(1, $sweepage[1]) <= $sweepage[0]))
 		{
-			$driver->sweep(time() - ($config['lifetime'] * 60));
+			$this->driver->sweep(time() - ($config['lifetime'] * 60));
 		}
 	}
 

+ 5 - 5
laravel/validator.php

@@ -394,7 +394,7 @@ class Validator {
 	}
 
 	/**
-	 * Validate that an attribute is a valid e-mail address.
+	 * Validate than an attribute is a valid e-mail address.
 	 *
 	 * @param  string  $attribute
 	 * @param  mixed   $value
@@ -406,7 +406,7 @@ class Validator {
 	}
 
 	/**
-	 * Validate that an attribute is a valid URL.
+	 * Validate than an attribute is a valid URL.
 	 *
 	 * @param  string  $attribute
 	 * @param  mixed   $value
@@ -444,7 +444,7 @@ class Validator {
 	}
 
 	/**
-	 * Validate that an attribute contains only alphabetic characters.
+	 * Validate than an attribute contains only alphabetic characters.
 	 *
 	 * @param  string  $attribute
 	 * @param  mixed   $value
@@ -456,7 +456,7 @@ class Validator {
 	}
 
 	/**
-	 * Validate that an attribute contains only alpha-numeric characters.
+	 * Validate than an attribute contains only alpha-numeric characters.
 	 *
 	 * @param  string  $attribute
 	 * @param  mixed   $value
@@ -468,7 +468,7 @@ class Validator {
 	}
 
 	/**
-	 * Validate that an attribute contains only alpha-numeric characters, dashes, and underscores.
+	 * Validate than an attribute contains only alpha-numeric characters, dashes, and underscores.
 	 *
 	 * @param  string  $attribute
 	 * @param  mixed   $value