web-dev-qa-db-ja.com

グローバル関数をcodeigniterのどこに配置するか

h()として機能する1つのecho htmlentities($var)のようないくつかのユーティリティ関数を作成しました。これらの機能をどこでも利用できるようにしたい。どこに置くの?.

23
aWebDeveloper

@david barkerが言ったように、あなたはヘルパーを使うかもしれません。すべての関数を含む「site_helper」などの名前のファイルを作成します。

ただし、関数がすでに存在するかどうかを確認する必要があることに注意してください。そうしないと、「関数がすでに宣言されています」というエラーが発生します。

だから、次のようなもの:

ファイルsite_helper.phpapplication/helpers/

if(!function_exists('h'))
{
  function h($value)
  {
   return htmlentities($value);
  }
}

if(!functin_exists('other_function')
//....etc.

そして、config/autoload.phpでそれをオートロードできます:

$autoload['helpers'] = array('site');

^-下線の前の部分のみを使用してファイルを呼び出す方法に注意してください。また、ヘルパーはクラスではなく、関数のコレクションです。

53
Damien Pirsy

/application/config/constants.phpファイルにグローバル変数ファイルを含める必要があります。次に、グローバル関数ファイルを/ application/helpersフォルダーに移動します。次に、グローバル関数ファイルをオートロードする必要があります。 /application/config/autoload.php

$autoload['helpers'] = array('your-global-function-file.php');

アップグレードは絶対的な悪夢なので、システムフォルダプロジェクト内には何も移動しないことをお勧めします。時には、CIロジックに準拠するようにコードをリファクタリングします。長期的には、すべての場所にコンテンツをコピー/貼り付けするよりも高速です。

7
Shiven

これがまさにヘルパーの目的です。

新しいヘルパーを作成し(_helper.phpを追加することを忘れないでください)、ヘルパーフォルダーに配置します。

あなたはそれをあなたの設定で自動ロードするか(それでどこでもそれを使用することができます)、または必要なときにそれを手動でロードすることができます。

4
Laurence

codeigniter-kint とグローバル関数のカスタムファイルを使用します。これにより、次のようなより有用で美しい出力が得られます。 enter image description here

ファイル:application/helpers/globalfunctions_helper.php

<?php
    /**
     * @file Global Helper Functions
     * 
     */

    if(!function_exists('pr'))
    {
      function pr($value=false){
       $CI = get_instance();
       $CI->load->library('kint');
       return @Kint::dump($value);   
      }
    }
    if(!function_exists('dp')){
      function dp($value=false)
      {
       $CI = get_instance();
       $CI->load->library('kint');
       Kint::dump($value);
       die();
      }
    }

参照: http://raveren.github.io/kint/

3
digitaldonkey