Php 从视图移动到控制器时,我应该如何调整函数调用?

Php 从视图移动到控制器时,我应该如何调整函数调用?,php,function,joomla,joomla-component,Php,Function,Joomla,Joomla Component,我的理解是,在为joomla构建MVC组件时,我们应该在该视图的控制器PHP文件中保留自定义函数。我正在快速建立一个组件视图,并在视图中使用以下功能查找两点之间的最短距离: function distance($a, $b) { list($lat1, $lon1) = $a; list($lat2, $lon2) = $b; $theta = $lon1 - $lon2; $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos

我的理解是,在为joomla构建MVC组件时,我们应该在该视图的控制器PHP文件中保留自定义函数。我正在快速建立一个组件视图,并在视图中使用以下功能查找两点之间的最短距离:

function distance($a, $b)
    {
list($lat1, $lon1) = $a;
list($lat2, $lon2) = $b;

$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
return $miles;
    }
随后,我在视图中使用其他基于变量的信息来调用此函数:

$distances = array_map(function($items) use($ref) {
$a = array_slice($items, 0);
return distance($a, $ref);
}, $items);
asort($distances);
当我将距离函数移动到控制器文件中时,我在尝试加载视图时遇到以下错误:

Fatal error: Call to undefined function distance() 

我应该在调用中或以其他方式更改哪些内容以正确格式化MVC体系结构的函数?

您可以发布有关MVC路径的完整类文件吗?并且控制器不一定包含所有自定义函数。决定方法在MVC范例中的位置应该基于其目的。例如,任何与数据检索有关的内容都应该放在模型中。然而,距离方法可能更适合helper类,因为它似乎是一种在整个代码库中都可以使用的方法。控制者应该真正关注行动。