Commit 906d0d85 authored by Colin Viebrock's avatar Colin Viebrock

add macros to tables

parent 5dd3ec6f
......@@ -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.");
}
}
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