2011-10-18 27 views
3

を機能するように渡していません();PHPの変数は、私は次のセットアップを持っている

class.language.php

(唯一の機能は、クラスではなく)このファイルは、同様にそれを引く必要があると私はheader.inc.phpからそれを渡す一つの変数に基づいてSQLクエリを実行しますスタッフの一意の言語ID。

機能は次のとおりです。

translate('TEXT_WELCOME_BACK_STAFF'); 
:私は

例の変換エントリがあり、この機能を使用して働いている

function translate($TRANSLATION){ 

$sql="SELECT $TRANSLATION FROM ".LANGUAGE_TABLE." WHERE LANGUAGE_ID=".$thisuser->getStaffLang; 
$query = mysql_query($sql); 
$translation = mysql_result($query,0); 
print $translation; 
} 

header.inc.php

まずファイル

私の問題は、私が外出しているときです関数$ thisuser-> getStaffLang;値が入力されますが、関数の中には空です。私は実際には、関数に同じ変数を何度も渡す必要はありません。その理由は、ファイルの中には20以上の変換があることがあり、それは冗長なコーディングのようです。誰かが、関数を呼び出すたびに関数に渡す必要なく、その変数を関数が認識できるようにする方法を教えてもらえますか?泥のようにはっきりしないといいですね。 :\

注:class.language.php(関数が動作する場所と動作しない場所)とheader.inc.php(変数だけが動作する場所)の両方にclass.staff.phpが必要です。だから彼らはどちらもそのコード/変数を利用できるはずです。

答えて

1

translate()

+1

ありがとうございました!私はこの2時間の間、壁に向かって頭を叩いています。 :P –

+0

なぜ誰か-1私ですか? : –

+0

Yea、I dunno:\ –

0

$thisuser->getStaffLangおそらく世界ではないのbegginingでglobal $thisuser;を追加します。関数の最初の行にglobal $thisuserを追加してグローバルにするか、

またはそれ以上の値を関数スコープで渡す必要があります。だからこのようなもの:

function translate($TRANSLATION, $stafflang){ 
// function here 
} 

translate('TEXT_WELCOME_BACK_STAFF',$thisuser->getStaffLang); 
+0

彼が最初に答えた時、私はこれを行う必要があるエントリの多くとして記述した "変数を渡す"メソッドを使用したくないので、私はすべての準冗長コードを持っているとは思わない。私はあなたが言及した両方の方法がうまくいくことを知っています。ありがとうございました! –

+0

関数の外にある変数には依存してはいけません。将来どこかで変数名を変更したり、関数や何かにしたりすると、突然動作しなくなり、多くの問題が発生します。 Whithinの関数/クラスは常にローカルのすべてを持っています –

+0

btw、それは最初のことではない、それは最高の答えについてです –

1

$thisuserをグローバルとしてマークする必要があります。以下を参照してください:

function translate($TRANSLATION) 
{ 
    global $thisuser;  //<---- MUST MARK global 

    $sql="SELECT $TRANSLATION FROM ".LANGUAGE_TABLE." WHERE LANGUAGE_ID=".$thisuser->getStaffLang; 
    $query = mysql_query($sql); 
    $translation = mysql_result($query,0); 
    print $translation; 
} 
関連する問題