Помощник
|
Переменная не передается в функцию. |
gaaarfild
|
Сообщение
#1
|
||
|
|
||
|
|||
ZiTosS |
11.11.2009, 13:13;
Ответить: ZiTosS
Сообщение
#2
|
|
Приучаемся
[php]echo $GLOBALS['navigation'];[/php] Причём это не передача переменной в функцию, это один из обходных путей который часто очень затрудняет отладку программы. |
|
|
gaaarfild
|
Сообщение
#3
|
|
А почему тогда остальные переменные передаются вообще без проблем?
|
|
|
gaaarfild
|
Сообщение
#4
|
|
И, кстати, либо я не понял, либо не работает тоже. =)
|
|
|
ZiTosS |
11.11.2009, 13:45;
Ответить: ZiTosS
Сообщение
#5
|
|
gaaarfild, да не передаются они, а ты просто оформляешь их как глобальные, поэтому они даже видны в функциях(ограниченной области). Советую тебе напрямую при вызове функции передавать значение переменной в качестве параметра, тогда и подобных вопросов возникать не должно.
Делай всегда так: [php]function navigation($array) { $navi = "<center>"; foreach($array as $key=>$value) { $navi .= "| <a href='".$value[0]."'>".$value[1]."</a> |"; } $navi .= "</center>"; return $navi; } function Account($param) { echo $param; } $navi[] = array("$adminfile?adm=Account", "Аккаунт"); $navi[] = array("$adminfile?adm=Account&do=Edit", "Редактировать"); $navi[] = array("$adminfile?adm=Account&do=Configure", "Конфигурация"); $navigation = navigation($navi); Account($navigation);[/php] Иначе и в функциях смысла нету. Функция нужна для однотипных действий выполняющихся над различными параметрами и возвращающими результат. А ты используешь функцию... Прямо с самого начала разрезаешь её, вталкиваешь туда глобальные переменные, от которых функция зависеть вообще не должна. Функция и сделана ограниченной для того чтобы она имела доступ только к тому что ей позволено и нужно для работы. Она не должна принимать во внимание внешние факторы(глобальные переменные) |
|
|
gaaarfild
|
Сообщение
#6
|
|
Безусловно, я понимаю этот факт. Но тут есть небольшая такая вещь. =) Это модуль. У него есть разные действия, которые только для этого модуля, но идентичные для всех функций данного модуля. Поэтому было бы проще передавать их как глобальные, потому что так удобнее. Задать их значение в модуле, но за пределами функций и просто объявлять их глобальными в пределах всего файла. Мне так удобнее. Как параметры передавать мне будет вообще неудобно. Может все таки есть способ сделать как у меня? Просто почему переменные объявленные глобальными в пределах этого файла, и заданные в нем же - недоступны, а объявленные в пределах этого файла, но заданные в родительском файле - доступны?
|
|
|
ZiTosS |
11.11.2009, 20:14;
Ответить: ZiTosS
Сообщение
#7
|
|
gaaarfild,
А ты вне функции проверял? То выводит или нет? |
|
|
gaaarfild
|
Сообщение
#8
|
|
Да. Вне функции доступна абсолютно нормально.
|
|
|
ZiTosS |
16.11.2009, 1:56;
Ответить: ZiTosS
Сообщение
#9
|
|
gaaarfild, Вот код который ты привёл выше, покажи в каких файлах этот код у тебя находится, и в какой последовательности и как ты их подключаешь.
|
|
|
gaaarfild
|
Сообщение
#10
|
|
Вот этот код находится в файле module.php
[php]<?php $navi[] = array("$adminfile?adm=Account", "Аккаунт"); $navi[] = array("$adminfile?adm=Account&do=Edit", "Редактировать"); $navi[] = array("$adminfile?adm=Account&do=Configure", "Конфигурация"); $navigation = navigation($navi); function Account() { global $navigation; echo $navigation; } Account(); ?>[/php] index.php - это шаблонизатор, в котором подключается module.php Так же есть файл templ.php, который подключается в файле index.php и в нем задается функция navigation(); [php]function navigation($array) { $navi = "<center>"; foreach($array as $key=>$value) { $navi .= "| <a href='".$value[0]."'>".$value[1]."</a> |"; } $navi .= "</center>"; return $navi; }[/php] массив для передачи в функцию navigation(); формируется в файле module.php как мы видим, и имеет имя $navi; Так же в файл index.php подключаются другие файлы, например конфигурации, в которых хранятся переменные. так вот. Когда мы в файле module.php создаем функцию, то в ней прописываем [php]function bla-bla(){ global $config, $navigation; }[/php] Почему $config - свободно доступна в функции bla-bla(); а $navigation вообще не определена. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Добавить к коду кнопки функцию Canvas | 0 | Anshag | 5059 | 25.11.2015, 12:41 автор: -Anshag- |
|
Написать функцию, для проверки правильности заполнения поля "отчество" в форме. | 0 | Ангелина2014 | 2407 | 5.3.2014, 0:59 автор: -Ангелина2014- |
|
Помогите! Мучаюсь! Как в функцию засунуть несколько циклов? | 9 | dfcan | 7870 | 7.8.2012, 18:55 автор: -cyber_ua- |
|
Написать функцию для интернет магазина | 0 | Vjik_hb | 3078 | 3.8.2012, 19:26 автор: -Vjik- |
Текстовая версия | Сейчас: 28.3.2024, 14:37 |