我有以下课程API
,他们会收到'来自其他类的函数(在本例中仅为Pipelines
),因此API :: getPipelines()返回Pipelines :: getPipelines()等等。 API函数列表将会增长,并且此代码将变得越来越大,因此我正在寻找一种将这些函数动态添加到API
类的方法。例如:register_methods_from(array('Pipelines', 'Blah'))
。做这个的最好方式是什么?
class API
{
/**
* The current API instance
*/
private static $_instance = null;
[...]
/**
* Define API funcs
*/
public static function getPipelines() {
return Pipelines::getPipelines();
}
public static function getPipeline($id) {
return Pipelines::getPipeline($id);
}
// etc...
答案 0 :(得分:2)
您可以使用PHP的魔术方法__callStatic
:
class API
{
static function __callStatic($name, $arguments)
{
if ( ! method_exists('Pipelines', $name))
{
return null; // Or throw error
}
return call_user_func_array('Pipelines::' . $name, $arguments);
}
}
你甚至可以在这里Pipelines
动态。
此外,您可能希望使用自动加载,这样可以在使用Pipelines
之类的内容时返回$api = new API();
的实例。
希望它有所帮助!
来源: