code quality and backreference support in controllers.
This commit is contained in:
parent
ae56f68c87
commit
d4c5114792
|
@ -30,7 +30,11 @@ public function wrap($value)
|
||||||
{
|
{
|
||||||
$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 @@ protected static function implications($table)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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 @@ public static function call($destination, $parameters = array())
|
||||||
|
|
||||||
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.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue