Commit d4c51147 authored by Taylor Otwell's avatar Taylor Otwell

code quality and backreference support in controllers.

parent ae56f68c
...@@ -30,7 +30,11 @@ abstract class Grammar { ...@@ -30,7 +30,11 @@ abstract class Grammar {
{ {
$segments = explode(' ', $value); $segments = explode(' ', $value);
return $this->wrap($segments[0]).' AS '.$this->wrap($segments[2]); return sprintf(
'%s AS %s',
$this->wrap($segments[0]),
$this->wrap($segments[2])
);
} }
// Since columns may be prefixed with their corresponding table // Since columns may be prefixed with their corresponding table
......
...@@ -75,9 +75,8 @@ class Schema { ...@@ -75,9 +75,8 @@ class Schema {
} }
// For some extra syntax sugar, we'll check for any implicit // For some extra syntax sugar, we'll check for any implicit
// indexes on the table. The developer may specify the index // indexes on the table since the developer may specify the
// type on the fluent column declaration. Here we'll find // index type on the fluent column declaration.
// any implicit indexes and add the commands.
foreach ($table->columns as $column) foreach ($table->columns as $column)
{ {
foreach (array('primary', 'unique', 'fulltext', 'index') as $key) foreach (array('primary', 'unique', 'fulltext', 'index') as $key)
......
...@@ -57,16 +57,41 @@ abstract class Controller { ...@@ -57,16 +57,41 @@ abstract class Controller {
list($controller, $method) = explode('@', $destination); list($controller, $method) = explode('@', $destination);
list($method, $parameters) = static::backreference($method, $parameters);
$controller = static::resolve($bundle, $controller); $controller = static::resolve($bundle, $controller);
// If the controller could not be resolved, we're out of options and will // If the controller could not be resolved, we're out of options and
// return the 404 error response. Of course, if we found the controller, // will return the 404 error response. If we found the controller,
// we can go ahead and execute the requested method on the instance. // we can execute the requested method on the instance.
if (is_null($controller)) return Response::error('404'); if (is_null($controller)) return Response::error('404');
return $controller->execute($method, $parameters); return $controller->execute($method, $parameters);
} }
/**
* Replace all back-references on the given method.
*
* @param string $method
* @param array $parameters
* @return array
*/
protected static function backreference($method, $parameters)
{
// Controller delegates may use back-references to the action parameters,
// which allows the developer to setup more flexible rouets to their
// controllers with less code. We will replace the back-references
// with their corresponding parameter value.
foreach ($parameters as $key => $value)
{
$method = str_replace('(:'.($key + 1).')', $value, $method, $count);
if ($count > 0) unset($parameters[$key]);
}
return array(str_replace('$1', 'index', $method), $parameters);
}
/** /**
* Resolve a bundle and controller name to a controller instance. * Resolve a bundle and controller name to a controller instance.
* *
......
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