add macros to tables

This commit is contained in:
Colin Viebrock 2013-04-03 18:26:15 -05:00
parent 5dd3ec6f1e
commit 906d0d851e
1 changed files with 38 additions and 1 deletions

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 @@ protected function column($type, $parameters = array())
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.");
}
}