[英]CodeIgniter MVC best practice - Controllers
我创建了一个Google
控制器类,该类具有一个distance()
方法。 这使用Google的距离矩阵来计算两个邮政编码之间的距离并返回该值。
现在,我有另一个名为“ Person”的控制器类。 我想从我的Person
类中调用${Google}->distance()
方法,以查看此Person与某个邮政编码之间的距离。
我将如何实现这一目标?
如果需要调用另一个控制器的方法,则您需要使用模块化扩展,因为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);
您所要求的不是MVC,而是有关PHP中对象和实例的工作方式的更多信息。
最直接的用法是:
$google = new Google();
$distance = $google->distance();
那不是很高的设计,而是让您开始工作的第一步。 稍后,您可以决定在其他地方创建Google
实例是否更好,例如Codeigniter提供了库加载机制,因此您可以将细节隐藏一些并使其更易于访问功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.