2009-09-10 3 views
0

Я создаю php-страницу с большим количеством функций, которые требуют использовать одну и ту же переменную (идентификатор сеанса).PHP-переменные для всех функций?

Могу ли я написать $ ID = $ _SESSION ['ID']; и просто используйте «ID» в каждой функции?

Вместо того, чтобы писать $ ID = $ _SESSION ['ID']; в каждой функции?

Благодаря

ответ

1

Да, вы могли бы сделать это, но было бы лучше, чтобы создать SessionManager класс, который оборачивает сессию и выставляет значения (например, ID) с помощью статических getXX функций.

попробовать что-то вроде этого:

class SessionManager { 
    public static function getID() { 
     return $_SESSION['ID']; 
    } 
} 

, то вы можете получить идентификатор в любом месте вы хотите, как это:

SessionManager::getID(); 
+0

Спасибо. Могу ли я сделать что-то подобное для использования этого кода: $ getid = "SELECT' username' FROM 'users' WHERE' ID' = '$ ID' "; \t $ result = mysql_query ($ getid); \t $ count = mysql_num_rows ($ result); \t $ row = mysql_fetch_row ($ result); Вместо того, чтобы набирать это каждый раз, мне нужно получить доступ к строке в базе данных? Спасибо – Elliott

+0

Если вы регулярно извлекаете имя пользователя на основе сохраненного идентификатора пользователя сеанса, то почему бы не сохранить имя пользователя в переменной сеанса при входе в систему? – da5id

+0

Это был просто пример, я получаю гораздо больше информации, используя идентификатор пользователя, jus, задаваясь вопросом, могу ли я «загрузить» все строки, а затем вызвать строку в функции. – Elliott

1

Если вы хотите, чтобы определить переменную вне области видимости функции и быть доступ к нему автоматически изнутри функций, это невозможно.

Вы можете определить $ ID = $ _SESSION ['ID']; вне вашей функциональной возможности, но затем в рамках каждой функции вы должны добавить это:

глобальный $ ID;

Это сделало бы переменную $ ID доступной для функции.

Это не предлагается по многочисленным причинам. Если бы я был вами, я бы просто вызвал $ _SESSION ['ID'] непосредственно из функции (ов).

0

Если вы объявите $ID глобальной переменной, вы можете использовать его в каждой функции (после вызова global $ID). но это не будет обновлять $_SESSION['ID'], если вы хотите, это тоже, вы должны использовать ссылки:

$ID = &$_SESSION['ID'] 
+0

Я не думаю, что он использует классы –

+0

где я говорил о классах? Хорошо, я вижу. общедоступная переменная может сбивать с толку. изменено на глобальное – knittl

0

(Только в случае, если вы еще не думали об этом) Вы можете также преобразовать все переменные сессии «скопом» в начале каждой функции:

foreach ($_SESSION as $key => $value) { 
    $$key = $value; 
} 
Смежные вопросы