繁体   English   中英

CodeIgniter MVC最佳实践-控制器

[英]CodeIgniter MVC best practice - Controllers

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

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

我将如何实现这一目标?

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

但是,在您的情况下,将此类逻辑放置在控制器中是一种不良的设计实践,您需要使用CI (由于Google是实用程序类而建议使用)或模型 (如果该类抽象了数据库交互作用)。

只需将您的类放在application/libraries/Google.phpPerson控制器中:

// 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);

您所要求的不是MVC,而是有关PHP中对象和实例的工作方式的更多信息。

最直接的用法是:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM