web-dev-qa-db-ja.com

CodeIgniter-グローバル変数を宣言するのに最適な場所

いくつかの場所で$variableを使用したいだけです。ビューとコントローラーだけでなく、routes.phpおよびその他の構成ファイルでも使用します。

次のようなものは必要ありません。構成ファイルを読み込むためにConfigクラスを使用します。 CIのget_instanceなどを使用します。

私はただ与えられた$variable(それは定数かもしれませんが、変数としてそれを必要とします)を宣言し、それをどこでも絶対に使いたいです。

実際... CIのどのPHPファイルかbootstrapは最初に解析されるものの1つであるため、そこにグローバル変数が...しかし、コア/システムまたは不適切なファイルではなく、この単純な要件に「最適な」配置。

14
J. Bruni

/application/configと呼ばれるconstants.phpというファイルがあります

私は通常、それらがどこにあるかを簡単に確認するためにコメントを付けてそこにすべてを入れます:

/**
 * Custom defines
 */
define('blah', 'hello mum!');
$myglobalvar = 'hey there';

index.phpがロードされた後、/core/CodeIgniter.phpファイルがロードされ、次に、共通機能ファイル/core/Common.phpがロードされ、その後/application/constants.phpがロードされます。ロードするファイル。

35
Dale

ヘルパーファイルで「Globals」クラスを静的メソッドとともに使用して、アプリのすべてのグローバル変数を管理します。ここに私が持っているものがあります:

globals_helper.php(ヘルパーディレクトリ内)

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

// Application specific global variables
class Globals
{
    private static $authenticatedMemberId = null;
    private static $initialized = false;

    private static function initialize()
    {
        if (self::$initialized)
            return;

        self::$authenticatedMemberId = null;
        self::$initialized = true;
    }

    public static function setAuthenticatedMemeberId($memberId)
    {
        self::initialize();
        self::$authenticatedMemberId = $memberId;
    }


    public static function authenticatedMemeberId()
    {
        self::initialize();
        return self::$authenticatedMemberId;
    }
}

次に、これをautoload.phpファイルに自動ロードします

$autoload['helper'] = array('globals');

最後に、コード内のどこからでも使用できるように、変数を設定するためにこれを行うことができます。

Globals::setAuthenticatedMemeberId('somememberid');

そしてこれはそれを読むために:

Globals::authenticatedMemeberId()

注:Globalsクラスに初期化呼び出しを残した理由は、必要に応じてクラスの初期化子を使用して将来拡張できるようにするためです。また、セッター/ゲッターを介して設定および読み取りされるものを制御する必要がない場合は、プロパティをパブリックにすることもできます。

4
Spartak

Constants_helper.phpファイルを作成して、そこに変数を配置することもできます。例:

define('MY_CUSTOM_DIR', base_url().'custom_dir_folder/');

次に、application/config/autoload.phpで、定数ヘルパーを自動ロードします

$autoload['helper'] = array('contstants');
2
lucentx

ファイルapplication/conf/contants.php内:

global $myVAR;
$myVAR= 'http://'.$_SERVER["HTTP_Host"].'/';

ヘッダーファイルまたは関数内に配置します。

global $myVAR;
$myVAR= 'some value';
1
user1817927

codeigniterglobal variableを宣言するのに最適な場所は、constants.phpディレクトリの/application/configファイルです

次のようにグローバル変数を定義できます

/**
 * Custom definitions
 */
define('first_custom_variable', 'thisisit');
$yourglobalvariable = 'thisisimyglobalvariable';
0
Mad Angle