web-dev-qa-db-ja.com

コードイグナイターで呼び出されるヘルパーとライブラリの方法に違いはありますか?

ライブラリとヘルパーのメソッドがコードイグナイターで使用される方法について、少し混乱しています。私はまだコードイグナイターを学んでいます。

コントローラ

_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())。

ヘルパーとライブラリの呼び出し方法に違いはありますか?

11
Nirmalz Thapaz

CodeIgniterヘルパーは、関連する関数(共通関数)のセットであり、モデルビューコントローラー、..どこでも使用できます。

そのファイルをロード(インクルード)すると、関数にアクセスできるようになります。

ただし、ライブラリはクラスであり、($this->load->library()によって)クラスのインスタンスを作成する必要があります。また、メソッドを呼び出すには、オブジェクト$this->...を使用する必要があります。

経験則として:ライブラリはオブジェクト指向コンテキスト(コントローラー、...)で使用されますが、ヘルパーはビュー(非オブジェクト)内で使用するのに適しています指向)。

27
Hashem Qolami

CIヘルパーにはクラスがある場合とない場合があります

ただし、ライブラリにはクラス表現が必要です。

これを参照してくださいSO回答

CodeIgniter:CodeIgniterでライブラリとヘルパーを作成するための意思決定

3
Kumar V