簡體   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