[英]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.