не работает global

Статус
В этой теме нельзя размещать новые ответы.

Фанат

oncle terrible
Команда форума
Ладно.
Я так понимаю, это бесполезно.
Слушать он не хочет, объяснить не может, а от от плача толку мало.
 

С.

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

Macintosh

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

Делает функция следующее, при определенных условиях, она делает уменьшенные копии изображений, при этом она может как учитывать соотношение сторон, тоесть прежде чем уменьшать она вычисляет соотношение сторон оригинала, и сравнивает с соотношением сторон у новой уменьшенной копии, если они разные вычисляет, где нужно обрезать и сколько у оригинала, что бы соотношение стало такимже как у нового изображения, делается это для того чтобы не было искажений, также при определенных условиях она может вращать изображение на 90, 180, 360 и т.д градусов, также она может делать изображение черно-белым, или делать инверсию цвета, она может зеркально отражать изображение, как вертикально так и горизонтально, или сразу по вертикали и горизонтали, она может делать вырезку определенных участков изображения, комбинировать вырезку и масштабирования, короче я могу долго продолжать, экий такой маленький фотошоп получается :) И в итогде есть два варианта, либо сохранить результат на диск, либо его вывести в браузер, и вот что бы не городить кучу повторяющегося кода, и делать кучу условий, хотел сделать так как я описал, чтобы $src обновлять, и ресурсы из памяти удалять, а не создавать временные переменные, сохранять в них новый ресурс, потом удалять старый, и потом тут записывать снова новый, и в процесе еще делать кучу условий. :) Думаю так я вас еще больше запутал :)
 

Фанат

oncle terrible
Команда форума
Я все равно не понял - вот этот весь цирк с конями был ради только последнего абзаца,
И в итогде есть два варианта, либо сохранить результат на диск, либо его вывести в браузер,
?
И зачем создавать кучу ресурсов - я тоже не понял.
И зачем одну функцию определять внутри другой - тоже.
 

Macintosh

Новичок
?
И зачем создавать кучу ресурсов - я тоже не понял.
И зачем одну функцию определять внутри другой - тоже.
Нет, извините за потраченное вами время, просто будет код на несколько строк больше да и все, все началось с того, что я забыл что нахожусь уже в функции (а точнее не сталкивался с такой ситуацией, и думал, что она глобальна для вложенной функции), в итоге после общения с вами, понял, что переменная (условно $a) не глобальная, ведь она доступна только в первой функции, а для всего скрипта она не глобальна. А я пытался обратиться к ней как к глобальной, не понял почему не работает и написал сюда, в итоге понял что гоню, и думал есть способ по другому обратиться к не глобальной переменной но как к глобальной, чтобы редактировать ее из функции которая вложена в другую функцию, думал что кто-то подскажет как. Но раз решения нет, то просто придется добавить условие и несколько дополнительных временных переменных. Просто если бы был способ обратиться к $src из функции что бы сразу ее там и удалить и обновить, то было бы красивее и меньше кода.
 
Последнее редактирование:

Фанат

oncle terrible
Команда форума
я все равно не понимаю.
могу только сказать, что ты первый, у кого такие огромные сложности с выдачей результата работы imagejpg

по поводу же твоих глобалов - попробуй посмотреть на этот свой код через полгодика.
и понять, что он делает
 

Tartyga

Новичок
Macintosh
Вы действительно пытаетесь огород городить))! Ну, да ладно!
В любом случае, не надо вкладывать функцию в функцию, таким методом сокращение кода вы не добьетесь.
PHP:
$a = '';

function b(){
    global $a;
    
    echo $a;
}

function a(){
    global $a;
    
    $a = 1;

    b();
}

a();
Принцип думаю понятен!
 

Macintosh

Новичок
я все равно не понимаю.
могу только сказать, что ты первый, у кого такие огромные сложности с выдачей результата работы imagejpg

по поводу же твоих глобалов - попробуй посмотреть на этот свой код через полгодика.
и понять, что он делает
Та дело не в imagejpg конкретно )) а в том, что я ошибочно подумал что переменная $a глобальная, для вложенной функции, но потом понял, что она не глобальна, поскольку $a создается уже внутри функции, вот и все, в чем была запара :) Я думал, что уже ясно выразился. По поводу глобальных переменных, я использую их очень редко и только там где это не создаст проблем в будущем.
 

Фанат

oncle terrible
Команда форума
вот опять ты все сводишь к своим коням.

если ты ДО СИХ ПОР не понял, о чем тебе говорили все это время, то я поясню:
твоя проблема не в том, что "$a не глобальна", а в том что весь твой код - это АДСКОЕ СПАГЕТТИ
 

Macintosh

Новичок
Macintosh
Вы действительно пытаетесь огород городить))! Ну, да ладно!
В любом случае, не надо вкладывать функцию в функцию, таким методом сокращение кода вы не добьетесь.
PHP:
$a = '';

function b(){
    global $a;
    
    echo $a;
}

function a(){
    global $a;
    
    $a = 1;

    b();
}

a();
Принцип думаю понятен!
Да чтож такое, ну нельзя там так сделать, нельзя создать переменную до функции, переменная создается уже внутри функции в нее помещается ссылка на ресурс, и никак иначе, я просто хотел обратиться внутри вложенной функции к переменной которая была создана в основной функции. Вот и все, вы просто все не так поняли, и пишите мне тут варианты, которые и ежику понятны. Но тут просто другая ситуация, уже решил, просто создал дополнительные переменные и подправил условия. без использования global. Ошибка была лишь в том что я думал что $a глобальна, просто запарился, конечноже она не глобальная, она создается внутри функции.
 
Последнее редактирование:

Macintosh

Новичок
вот опять ты все сводишь к своим коням.

если ты ДО СИХ ПОР не понял, о чем тебе говорили все это время, то я поясню:
твоя проблема не в том, что "$a не глобальна", а в том что весь твой код - это АДСКОЕ СПАГЕТТИ
В чем спагети? Вот реально, ребят, вы не фига кода не видели, а делаете такие выводы :) Я в шоке :( Обоснуйте чтоли свои мысли, а то я не врублюсь от куда такие выводы
 

Tartyga

Новичок
Macintosh
Да, я понял что вы имели ввиду, просто действительно (возможно из-за того, что вы не привели весь код, а сокращенный пример) сама идея выглядит очень абсурдно. Ведь если вы хотите использовать "вспомогательную функцию b" то какой смысл ее вкладывать и делать недоступной вне функции а, плюс народ смутило использование global и это понятно, ведь проще передать переменную в функцию, а еще с толку сбивает, что вы не хотите объявлять переменную $a вне функции, значение то вы ей присваиваете уже в функции, ну убейте ее после выполнения и делов то!)))
 

Macintosh

Новичок
Ведь если вы хотите использовать "вспомогательную функцию b" то какой смысл ее вкладывать и делать недоступной вне функции а
Эта функция, это отдельный файл (модуль) на него возложены все действия которые связаны с обработкой изображений, а вложенные функции я сделал для того, чтобы внутри основной функции не дублировать один и тотже код по многу раз. А просто сделать функции и несколько раз их вызывать, вместо того, чтобы делать 100 строк кода ведь лучше сделать всего 20, не правда ли? И естественно раз это модуль который делает конкретную работу, не хочется разбивать его на части и т.д., да и незачем, он отлично работает. Можно конечно сделать этот модуль в виде класса, но это уже другой разговор, хотя может быть и стоит его сделать классом.
 

Macintosh

Новичок
Бррр, так вы ее что, инклудите внутри "function a()"??
Да нетже :)

Допустим идет файл с кодом, в нем просто инклюдится файл, ну например:

require_once 'create_image.php';

create_image(Сюда передается массив с кучей параметров, которых может быть от 5 до 20);

Ну и весь функционал уже обрабатывается в функции. В которой делается все необходимое чтобы сделать изображение под определенный запрос, которых может быть десятки разных. И естественно, функция довольно большая, около 200 строк кода, на данный момент, но функционал в нее добавляется, в процессе разработки движка. Так что будет скорее всего еще больше.
 

С.

Продвинутый новичок
Macintosh, я тебе уже назвал кодовое слово "инкапсуляция", которое ты должен как молитву повторять 8 раз перед сном и 16 раз перед тем как сесть работать за компьютер.
 

Macintosh

Новичок
причем на столь примитивной и линейной задаче, как "свой фотошоп"
Ну если для вас это примитивная задача, то я рад за вас :) а я делаю это впервые, и для меня это не простая задача :) Если это для вас все так просто, а хренли там сбацаю ка я фотошоп, ерунда :) Вы наверно миллионер, у вас вила, самолет, и вообще купаетесь в деньгах с таким мозгом :) Вы гений :) Поздравляю вас, но не всем дано к сожалению, есть и обычные люди со средним уровнем интеллекта.
 

Фанат

oncle terrible
Команда форума
Ты, похоже, вообще не читаешь, что тебе пишут. А разговариваешь с голосами в своей голове.
Диалог получается такой:
- как вы узнали, что у меня говнокооод? вы же его не видели!!!
- ты первый, у кого такие проблемы
- оооо, вы миллионееер!

В общем, даже по этому диалогу видно, что за каша у тебя в голове - в код для этого заглядывать не надо.
 

Macintosh

Новичок
Ты, похоже, вообще не читаешь, что тебе пишут. А разговариваешь с голосами в своей голове.
Диалог получается такой:
- как вы узнали, что у меня говнокооод? вы же его не видели!!!
- ты первый, у кого такие проблемы
- оооо, вы миллионееер!

В общем, даже по этому диалогу видно, что за каша у тебя в голове - в код для этого заглядывать не надо
.

Жесть, вы сказали, что для вас написать фотошоп это просто, я вам ответил, что это не просто, разве что только для гениев, а раз вы гений занимающийся программированием, наверно вы зарабатываете сотни тысяч долларов в месяц. Это все что я сказал, и теперь вы мне говорите, что я вообще сумасшедший, а может это у вас бардак в голове, я вам об одном, вы мне о другом :) Да уж, я понимаю что переписка сильно искажает общение, но не настолько. Да может я и не везде объяснил что конкретно мне нужно, но вы делаете такие выводы, что у меня складывается впечатление, что это у вас реальные проблемы с головой. Вы просто первый с кем я общаюсь и после этого человек делает такие выводы. Жесть!

ты первый, у кого такие проблемы
Та какие проблемы? :))) Я уже все решил, все работает!
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху