add macros to tables

This commit is contained in:
Colin Viebrock
2013-04-03 18:26:15 -05:00
parent 5dd3ec6f1e
commit 906d0d851e

View File

@@ -39,6 +39,25 @@ class Table {
*/
public $commands = array();
/**
* The registered custom macros.
*
* @var array
*/
public static $macros = array();
/**
* Registers a custom macro.
*
* @param string $name
* @param Closure $macro
* @return void
*/
public static function macro($name, $macro)
{
static::$macros[$name] = $macro;
}
/**
* Create a new schema table instance.
*
@@ -422,4 +441,22 @@ class Table {
return $this->columns[] = new Fluent($parameters);
}
}
/**
* Dynamically handle calls to custom macros.
*
* @param string $method
* @param array $parameters
* @return mixed
*/
public function __call($method, $parameters)
{
if (isset(static::$macros[$method]))
{
array_unshift($parameters, $this);
return call_user_func_array(static::$macros[$method], $parameters);
}
throw new \Exception("Method [$method] does not exist.");
}
}