2

Googleメソッドを持つコントローラー クラスを作成しましたdistance()。これは、Google の距離行列を使用して 2 つの郵便番号間の距離を計算し、値を返します。

これで、「Person」という別のコントローラー クラスができました。${Google}->distance()クラス内からメソッドを呼び出して、Personこの 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 に答える