У меня есть следующий класс, 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...
Вы можете использовать магический метод 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();
используется.
Надеюсь, поможет!
Источники:
Других решений пока нет …