Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как обойтись без $GLOBALS и $_POST ?


Автор: =Женек= 10.10.2007, 18:20



Задать вопрос:

У меня отдельный файл - functions.php. В index.php он включается через include ("functions.php"); Для всех переменных которые объявлены в index.php и использутся в functions.php вынужден писать $GLOBALS['var']. Данные переданные методом post также доступны только через $_POST['var'].

Нельзя ли как-нибудь упростить, что-нибудь прописать, чтобы не добавлять к именам переменных $GLOBALS и $_POST ?

Автор: mishaSL 10.10.2007, 18:49
Цитата(=Женек= @  10.10.2007,  18:20 Найти цитируемый пост)
Данные переданные методом post также доступны только через $_POST['var']

В любом случае нужно брать из массива _POST, потом обработать и далее работать уже с нужными переменными.
к примеру:
Код

$myIntVal = intval($_POST['myIntVal']);
// и далее уже работаешь с переменной $myIntVal


Цитата(=Женек= @  10.10.2007,  18:20 Найти цитируемый пост)
Для всех переменных которые объявлены в index.php и использутся в functions.php вынужден писать $GLOBALS['var'].

Пример покажите пожалуйста.... Странно как-то...

Автор: =Женек= 10.10.2007, 19:01
Пример? Ради бога - в index.php я открываю соединение с mysql, даю ему имя $connection.
Когда я обращаюсь к $connection в index.php - нет проблем:

Код

  $query=mysql_query($query_string, $connection);


 Многие функции для удобства вынесены в файл functions.php. Если в этой функции есть вызов mysql, то приходится писать

Код

  $query=mysql_query($query_string, $GLOBALS['connection']);

Автор: Pokoinik 10.10.2007, 20:02
=Женек=, 
как вариант в начале функции писать global $connection;

Автор: comcon1 10.10.2007, 20:03
если вначале включаемого файла написать global $connection;
то далее в этом файле просто обращаетесь к переменной $connection)))

Добавлено через 44 секунды
) одновременно smile 

Автор: chiffa 10.10.2007, 20:35
нууууу, а почему никто не предложил отключить регистр_глобалс в пхп.ини? 

Автор: =Женек= 10.10.2007, 22:57
Отключить?
Мож я чего не понимаю, но когда проблема появилась, я подумал что они у меня отключены и их как раз включить надо. Ан нет.


Код

если вначале включаемого файла написать global $connection;



Если вначале (ставил после "<?php")- не получается. Если только ставить в начале каждой функции. Но это тоже нерационально.

Еще предложения будут?

Автор: rMaveric 11.10.2007, 00:07
=Женек=, Не используй global и масив глобальных переменных, это к Богу не ведет. Если у тебя что-то видно извне функции, а нужно чтобы появилось внутри функции, то для этих целей у функции параметры придуманы. Это раз.

Для извлечения данных передаваемых методом post служит массив $_POST и его использование не предполагает ничего страшного. Это два.

Но если ты не знаешь для чего используются параметры функции, и как их использовать, то можешь попробовать поюзать массив $_SESSION, он как глобальный тоже сойдет smile Но работодателю такой код лучше не показывать в качестве портфолио.

Автор: Папараццы 11.10.2007, 06:51
register_globals=On
 Надо врубить чтобы он глобальные перменные  регистрировал.  И не каких проблем не будет

Автор: rMaveric 11.10.2007, 10:46
Пожалуйста не давайте рекомендаций ухудшающих код кроме как в варианте стёба.  smile 

Пусть человек сразу учится писать красиво и правельно, а то потом такой код вам же править прийдется, прошу прощения а  smile 

Автор: =Женек= 11.10.2007, 13:05
Папараццы, фтыкать в тему надо, я уже писал что проверял register_globals

Добавлено через 13 минут и 14 секунд
Код

$_POST и его использование не предполагает ничего страшного


Конечно. Но в основном файле я могу просто обратиться - $var. А во включаемом - не могу (((.

Автор: Veve 11.10.2007, 13:40
Цитата

Конечно. Но в основном файле я могу просто обратиться - $var. А во включаемом - не могу (((. 


Ну я думаю, что тоже можешь.... Просто насколько я понял, твой файл "functions.php" состоит из множества функций:
Код

 function f1()
{
.....
}
 function f2()
{
.....
}
 function f3()
{
.....
}

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

echo $var; 

в начале включаемого файла, только не внутри функции!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)