Forum Webscript.Ru
Программирование => PHP => Тема начата: ManInBlack от 26 Июля 2005, 00:29:05
-
Почему global не работает и как этого избежать (пользоваться переменными), если совершаются такие действия:
+-внешний (главный) файл подключает (include) скрипт модуля (module.php)
-->(module.php)--+-скрипт модуля подключает(include) свой файл функций (func.php)
-->(module.php)->(func.php)--+- из функций в func.php нельзя достать переменные (не все, что странно!)
Как сделать это возможным?
-
global работает всегда
-
Почему global не работает и как этого избежать (пользоваться переменными), если совершаются такие действия:
+-внешний (главный) файл подключает (include) скрипт модуля (module.php)
-->(module.php)--+-скрипт модуля подключает(include) свой файл функций (func.php)
-->(module.php)->(func.php)--+- из функций в func.php нельзя достать переменные (не все, что странно!)
Как сделать это возможным?
У меня возникла точно такая же херня.
Как бы все таки пофиксить?
-
способ пофиксить существует в природе только один:
почитать документацию, и написать свой скрипт в соответствии с ней.
или, на крайний случай, задать на форуме КОНКРЕТНЫЙ вопрос.
-
Хорошо конкретный вопрос:
function func1(){
#global $a;
$a = "test";
function func2(){
global $a;
echo "##$a##";
}
func2();
}
func1();
?>
При выполнении этот скрипт выдаст ####
Если раскоментировать первый global, то все работает.
Вопрос: Есть ли возможность заставить работать скрипт не используя global в func1?
В документации ничего вразумительного по данному вопросу не нашел. Может плохо искал конечно.
-
Вопрос: Есть ли возможность заставить работать скрипт не используя global в func1?
Например передачей параметра
function func1(){
function func2($str){
echo "##$str##";
}
func2("test");
}
func1();
-
Передача параметром тоже не подходит.
Я привел упрощенную схему.
На самом деле таких переменных там много. Причем все они разбросаны по разным модулям. И вложенность функций более сложная. Прописывать их в global, а тем более передавать параметром сильно не желательно.
Еще вопрос: где можно почитать про область видимости переменных во вложенных функциях.
-
На самом деле таких переменных там много.
может уж тогда на крайняк сделать из них массив.
Причем все они разбросаны по разным модулям.
имхо вот это не очень хорошо.
И вложенность функций более сложная.
если не секрет а к чему такая вложенность ф-ций. например в том примере что ты приводишь, вложенность вовсе не нужна. я конечно понимаю что пример упрощенный, но все же...
-
если не секрет а к чему такая вложенность ф-ций. например в том примере что ты приводишь, вложенность вовсе не нужна. я конечно понимаю что пример упрощенный, но все же...
Есть две разработки, которые я пытаюсь скрестить.
В базовой разработке, модули вызываются только при помощи функций.
Как ни хотелось, но видимо прийдется вносить изменения в базовую разработку.
-
а у меня в ПХП 4.3.6 все работает правильно без использования global в func1...
$a=111;
function f1(){
function f2(){
global $a;
echo \'a=\'.$a;
}
f2();
}
f1();
?>
Выводит "a=111"
-
В таком случае все работает.
Но был интересен случай, когда $a определялась именно в f1().
Хотя в принципе, это уже чисто академический интерес.