Области видимости переменных

TDionis

Новичок
Области видимости переменных

Здравствуйте, хочеть работать с переменнами определенными в области видимости в одной функции через другую фунцию. Т.е.
function www()
{
//здесь хочу изменять переменные $q $w $e .. $m
}

function qqq()
{
$q=0;
$w=3;
$e=7;
...
$m=678;

www();

//здесь хочу воспользоваться результатом изменений
}

Примечания:
- не хочу глобализировать т.к. на глобальном уровне могу кого-то перезатереть (вообще глобальные переменные это зло)
- не хочу передавать все переменные как ссылки в www ибо переменных много, очень много
- это нельзя соединить в одну функцию т.к. вызываемая внутри функция почти всегда разная.

Дополнительный вопрос:
можно ли как то прервать цикл из вызываемой фукции, т.е. чтобы www прервала цикл, или перешла к следующей итерации.
function qqq()
{
while(1) {www();}
}

Примечание:
- не хочу писать ифы на возвращенный результат функции www ибо это накладно - функции, кажется, для того и существуют чтобы не повторять один и тот же код много раз

Единственное что пришло в голову eval(www()) - но сами понимаете это тот еще способ.
Зарание спасибо.
 

tf

крылья рулят
while(www());
а вообще нафиг тебе это нужно?
 

Igor aka TiGR

Новичок
Когда у нескольких функций появляется куча общих переменных, пора задуматься о создании соотв. класса. Хотя проектировать структуру классов надо начинать всё же не отсюда...
 

TDionis

Новичок
Простите, а может тогда просто не надо программировать?
Я думал об этом.. Но на самом деле в программировании как и в др областях деятельности мы стремимся к меньшей головной боли, и хотим чтобы в итоге все было красиво и понятно. Для чего нужна функция? Для того чтобы не писать один и тот же код в 30 разных местах, а именно это меня заставляет сейчас делать пхп. И в итоге вместо вызыва одной функции там в каждом месте получается иф на пару витвлений.

а вообще нафиг тебе это нужно?
Сейчас постараюсь объяснить: я хочу повесить на имеющийся у меня код проверки ОДЗ переменных. Причем определить где я хочу вызывать эти проверкии, а потом только определять какие я хочу проверки. Причем не правильно заданные переменные хочу исправлять. Т.е.
function qqq()
{
//вычисление переменных, много переменных

www(); // проверка и если определенная переменная не правильна то изменить ее.

//продолжение вычислений
}

Причем если что-то совсем не так, т.е. я не могу исправить определенную переменную, то нужно прервать цикл/функцию.

Когда у нескольких функций появляется куча общих переменных, пора задуматься о создании соотв. класса. Хотя проектировать структуру классов надо начинать всё же не отсюда...
Хорошая идея! Единственно не хочется пока переводить все на ООП, есть другие варианты?
 

Андрейка

Senior pomidor developer
>>есть другие варианты?
ага.. есть массивы

>>пора задуматься о создании соотв. класса
день ООП на пхпклаб?
 

hermit_refined

Отшельник
Но на самом деле в программировании как и в др областях деятельности мы стремимся к меньшей головной боли, и хотим чтобы в итоге все было красиво и понятно
Вот именно! Поэтому мы пишем if, создаём объекты и явно передаём параметры, а не пользуемся каким-то маразматическим языком, в котором вызов внешне безобидной функции переворачивал бы с ног на голову локальный контекст или вообще возвращал бы управление в пятую точку.

Причем если что-то совсем не так, т.е. я не могу исправить определенную переменную, то нужно прервать цикл/функцию.
http://www.php.net/exceptions
 

TDionis

Новичок
И почему везде головная боль?
Вот именно! Поэтому мы пишем if, создаём объекты и явно передаём параметры, а не пользуемся каким-то маразматическим языком, в котором вызов внешне безобидной функции переворачивал бы с ног на голову локальный контекст или вообще возвращал бы управление в пятую точку.
Абсолютная правда!
http://www.php.net/exceptions
Спасибо учту.

ага.. есть массивы
хороший вариант! спасибо.

Есть ли все же еще варианты кроме ОПП (уж очень не охота все переписывать)?
 
Сверху