Я хочу разделить определенные функции из методов контроллера в библиотеки, чтобы сделать их модульными.Основываясь на URI, я пытаюсь направить на метод библиотеки, если он существует.Но мне нужно было загрузить библиотеку для проверки метода с помощью функции php method_exists .Единственный другой способ проверить это - поместить все библиотечные методы в массив конфигурации и проверить там имя метода.Например:
<?php
/**
* Application_config.php
*/
$config['extensions'] = array(
'News' => array(
'library' => 'articles_library',
'methods' => array(
'articles',
'article',
'edit_article',
'add_article',
'delete_article'
)
)
);
и
<?php
/**
* admin_controller.php
*
* all admin routes go to index
*/
class C3_base_controller extends Controller {
public function index() {
$lib_chk = 0;
$ext = $this->config->item('extensions');
foreach($ext as $item) {
foreach ($item['methods'] as $meth) {
if ($this->uri->segment(2) == $meth) {
$lib = $item['library'];
echo $this->$lib->$meth();
$lib_chk = 1;
}
}
}
if ($lib_chk == 0) {
// rest of controller...
}
}
}
Есть ли лучший способ проверить наличие библиотечного метода в каждой библиотеке без загрузки библиотек? Необходимость дублировать каждый метод в конфигурации приложения просто требует его.