2

我创建了一个Google具有方法的控制器类distance()。这使用谷歌的距离矩阵来计算两个邮政编码之间的距离并返回值。

现在我有另一个名为“Person”的控制器类。我想${Google}->distance()从我的Person班级中调用该方法,以查看此人与某个邮政编码的距离。

我将如何实现这一目标,我是否以正确的方式进行。

4

2 回答 2

4

如果需要调用另一个控制器的方法,则需要使用模块化扩展,因为 CI 本身不支持 HMVC。

但是在您的情况下,将此类逻辑放在控制器中是一种糟糕的设计实践,您需要使用 CI(推荐使用,因为Google它是一个实用程序类)或模型(如果该类抽象数据库交互)。

只需将您的类放入application/libraries/Google.php控制器中Person即可:

// 1. Load library via CI's loader:
// You may want to autoload the library
// @see application/config/autoload.php
$this->load->library('google'); 

// 2. Use library:
// NOTE: If it's a static class you need to call it as:
// Google::distance($postcode1, $postcode2);
$distance = $this->google->distance($postcode1, $postcode2);
于 2012-12-24T11:24:03.603 回答
0

您问的不是 MVC,而是更多关于 PHP 中的对象和实例如何工作的问题。

最直接的用法是:

$google = new Google();
$distance = $google->distance();

那不是高级设计,而是您让它发挥作用的第一步。稍后您可以决定在其他地方创建实例是否更好Google,例如 Codeigniter 提供库加载机制,因此您可以隐藏一些细节并使其更容易访问功能。

于 2012-12-24T11:22:48.313 回答