add macros to tables
This commit is contained in:
parent
5dd3ec6f1e
commit
906d0d851e
|
@ -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.");
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue