|
|
|
| foreach($_POST as $key=>$val){ $$key = $val; }
foreach($_GET as $key=>$val){ $$key = $val; }
в коментариях было написано что дает доступ ко всем переменным типа пост и гет
как этим пользоваться?
что за key и val? | |
|
|
|
|
|
|
|
для: moonfox
(25.05.2005 в 06:05)
| | Этот прием имет значение только для выключенной директове register_globals.
В противном случае, такие преобразования производятся автоматически.
Переменные, переданные методом POST заносятся в массив POST, например:
Из формы методом POST было передано 2 переменных с именами var1 и var2. Это можно сэмулировать следующим образом
<?
$_POST["var1"]=3;
$_POST["var2"]="Вася пошел в магазин";
?>
|
После применение вот такой конструкции
<?
foreach($_POST as $key=>$val)
{
$$key = $val;
}
?>
|
будут созданы переменные
<?
$var1=3;
$var2="Вася пошел в магазин";
?>
|
которых раньше не существовало (если выключена директива register_globals)
Таким образом, к переменным можно обращаться не через массив $_POST, а непосредственно по их имени. Это несколько удобней.
>что за key и val?
В переменную $key заносятся ключи массива $_POST - это то, что в квадратных скобках. А в переменную $val заносятся значения.
<?
$_POST["var1"]=3;
$_POST["var2"]="Вася пошел в магазин";
?>
|
http://www.softtime.ru/bookphp/gl4_2.php | |
|
|
|
|
|
|
|
для: moonfox
(25.05.2005 в 06:05)
| | 1) Допустим у вас два поля
<form action='myscript' method='POST'>
<input type='text' name='surname' value=''>
<input type='text' name='name' value=''>
<input type='submit' name='add_name' value='Добавить'>
</form>
|
2) После щелчка на кнопке "Добавить", все данные формы передаются в скрипт myscript.php. Они помещаются в суперглобальный массив $_POST (В переменной $_POST['name'] будет значение текстового поля name). Конструкция
foreach($_POST as $key=>$val)
|
последовательно перебирает все элементы массива $_POST[], сохраняя ключ элемента ( surname, name) в переменной $key, а значение в переменной $val (например 'Иван', 'Белов').
3)
Данная конструкция читается так: переменной с именем $key присвоить значение равное $val. В нашем примере получается две переменных $surname и $name. То есть если $key будет равно 'name', создается переменная с именем name и ей присваивается значение 'Белов'. Такая конструкция называется динамическая переменная.
PS Я сам часто использую такой способ. Перед foreach советую поставить комментарий, содержащий список переменных, которые у вас получаются. | |
|
|
|
|
|
|
|
для: antf
(25.05.2005 в 08:09)
| | Ой, а я ответ в offline редактировал и не заметил сообщение Дизайнера :-) | |
|
|
|
|
|
|
|
для: antf
(25.05.2005 в 08:25)
| | ешо 1 вопросик:)
а есть ли разница меж данным подходом и простым обращением непосредственно к переменным через масивы пост и гет
$var=$_POST['qqq']; | |
|
|
|
|
|
|
|
для: moonfox
(26.05.2005 в 05:55)
| | Разницы нет. Подробнее об этом вопросе: почему стало необходимо пользоваться массивами POST и GET можно почитать по ссылке.
http://www.softtime.ru/info/articlephp.php?id_article=13 | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(26.05.2005 в 06:21)
| | Хочу написать небольшой модуль для вывода простейшего линейного графика. Опыта в этом деле нет. Подсмотренные чужие модули реализованны на классах.
Вот отрывки кода:
class PhpBarGraph
{
var $_image;
.....
function SetShowLabels($labels)
{
$this->_showLabels = $labels;
}
......
$x1 = $this->_leftMargin + 1 + (($i-1) * $this->_barWidth) + ($i * $this->_barSpacing);
$y1 = $this->_height - $this->_bottomMargin - 1 - ($myBarheight);
$x2 = $this->_leftMargin + (($i-1) * $this->_barWidth) + ($i * $this->_barSpacing) + $this->_barWidth;
$y2 = $this->_height - $this->_bottomMargin - 1;
.........
}
|
там много чего :)
Вопросы вот какие:
1) Почему используются именно class (а не не function, к примеру). Какие преимущества это даёт?
2) Нигде в мануалах не описано что обозначает " ->". Какое дествие выполняет код
function SetShowLabels($labels)
{
$this->_showLabels = $labels;
}
|
находясь внутри класса?
Объясните пожалуйста. | |
|
|
|
|
|
|
|
для: PHPFan
(15.06.2005 в 20:52)
| | 1) Классы призваны облегчить создание Web-приложений больших объёмов, так как реально такие приложения встречаются редко вы можете прибегнуть к функциям, что при малых объёмах кода, даже нагляднее
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=641
http://www.softtime.ru/forum/]read.php?id_forum=1&id_theme=3061
2) Это код обращается к члену класса $_showLabels, если не использовать $this-> то будте создана новая переменная. | |
|
|
|
|
|
|
|
для: cheops
(15.06.2005 в 21:09)
| | Большое спасибо. Насколько понял классы нужны лишь при реально больших объёмах кода, для того чтоб методом наследования эволюционно продвигать php скрипт :)
Думаю, в моём случае будет разумнее и проще обойтись процедурным программированием.
ps Хотя чисто для тренировки лучше сделать класс. | |
|
|
|