API и Web - разные понятия, и аутентификация должна выполняться по-разному.
Насколько я понимаю, вы хотите использовать функции из веб-контроллеров в разделе API.
Если вы используете для внутренних целей, то в вашей функции может быть дополнительная переменная, чтобы не проверять аутентификацию (предположим, что ваша функция не требует, чтобы пользовательская информация передавалась).
EG:
function showRecord($api = false){
if($api){
//don't authenticate
}else{
//authenticate
}
//rest of the code here
}
Другой способ
Отделите общий код от одной функции и вызовите его в контроллере API или веб-контроллере в соответствии с вашими требованиями.
EG: (Все три контроллера должны находиться в одном пространстве имен, или вы должны использовать их правильно, если они находятся в разных пространствах имен):
// Controller: CommonController
function myCommonfunction($var){
//db query or any processing
}
//function from api controller
function doSomethingApi(){
$ctrl = new CommonController();
$res = $ctrl->myCommonfunction('test');
return $res
}
//function from webcontroller
function doSomething(){
$ctrl = new CommonController();
$res = $ctrl->myCommonfunction('web');
}
То, как вы собираетесь подходить, основано исключительно на структуре вашего приложения.