Переменная PHP не переходит в функцию - PullRequest
3 голосов
/ 18 октября 2011

У меня есть следующие настройки:

class.staff.php

Это определяет много переменных, одна из которых я сейчас работаю с $ thisuser-> getStaffLang ();

class.language.php

(только функция, а не класс) Этот файл выполняет SQL-запрос на основе одной передаваемой мной переменнойон должен быть в header.inc.php, а также выводить уникальный идентификатор языка сотрудников.

Функция:

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

Первый файл, с которым я работаю, используя эту функцию

Пример перевода:

translate('TEXT_WELCOME_BACK_STAFF');

Моя проблема в том, что когда я нахожусь за пределами функции $ thisuser-> getStaffLang;заполнен, но внутри функции он пуст.Я действительно не хочу снова и снова передавать одну и ту же переменную в функцию, поскольку в некоторых файлах может быть более 20 переводов, и это выглядит как избыточное кодирование.Может кто-нибудь сказать мне, как, черт возьми, я могу заставить эту переменную распознаваться функцией без необходимости передавать ее ей каждый раз при вызове функции?Надеюсь, это не было ясно, как грязь.: \

Примечание. Для class.language.php (где функция работает и не работает) и для header.inc.php (где работает только одна переменная) требуется class.staff.php.Таким образом, они оба должны иметь возможность использовать этот код / ​​переменную.

Ответы [ 3 ]

2 голосов
/ 18 октября 2011

добавить global $thisuser; в начале translate()

1 голос
/ 18 октября 2011

Вам нужно пометить $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;
 }
0 голосов
/ 18 октября 2011

$thisuser->getStaffLang, вероятно, не является глобальным. Вы должны сделать его глобальным, добавив global $thisuser в первую строку функции,

или лучше, передайте эту переменную также в область действия функции. Вот как то так:

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

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