ライブラリとヘルパーのメソッドがコードイグナイターで使用される方法について、少し混乱しています。私はまだコードイグナイターを学んでいます。
コントローラ
_function index(){
$this->load->helper('text');
$this->load->library('auth'); //custom library
$data['string'] = 'this is sample ..... this is sample';
$this->load->view('article', $data);
}
_
見る
_<?php
if(is_logged_in()){ //is_logged_in() is the method from the library, 'auth'
echo 'You are logged in';
}
<p><?php echo Word_limiter($string, 10); ?></p> <!--Word_limiter() is the method from the helper, 'text' -->
_
上記のビューファイルでは、ヘルパーメソッドWord_limiter()
は正常に機能します。ただし、メソッドis_logged_in()
は機能しません。しかし、($this->auth->is_logged_in()
)を実行すると、機能します。
しかし、なぜヘルパーのメソッド、つまりWord_limiter()
をこのように書く必要がないのですか($this->text->Word_limiter()
)。
ヘルパーとライブラリの呼び出し方法に違いはありますか?
CodeIgniterヘルパーは、関連する関数(共通関数)のセットであり、モデル、ビュー、コントローラー、..どこでも使用できます。
そのファイルをロード(インクルード)すると、関数にアクセスできるようになります。
ただし、ライブラリはクラスであり、($this->load->library()
によって)クラスのインスタンスを作成する必要があります。また、メソッドを呼び出すには、オブジェクト$this->...
を使用する必要があります。
経験則として:ライブラリはオブジェクト指向コンテキスト(コントローラー、...)で使用されますが、ヘルパーはビュー(非オブジェクト)内で使用するのに適しています指向)。
CIヘルパーにはクラスがある場合とない場合があります
ただし、ライブラリにはクラス表現が必要です。
これを参照してくださいSO回答