А с аргументом как будто не так?
UPD Расскажи тогда, какие такие разные аргументы могут быть в этой функции? Я имею ввиду отличные от коннекта? И в чем разница опять же с global?
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Игорь_Vasinsky
22.02.2017 - 21:04
Цитата |
Я имею ввиду отличные от коннекта? И в чем разница опять же с global? |
да уйма, чё щас фантазировать, не будем уходить далеко от темы, хотя цвет ячейки таблицы, данные из конфига - хотя там долны быть по идее константы, да дохера вариантов
да бля, использование функции для разных коннектов, да, конкретный вариант всего лишь экранирует данные, но почему не кто не говорит о конкретных случаях ?
будет у него 8 коннектов, в функции, где используются запросы и ему заглобалить 8 коннектов нужно ?
хотя ты говорил, сменить то не проблема, но как же код в другом месте, да и эта переменная тока для чтения якобы..
я ещё раз повторяюсь, я не говорю про вред в конкретном случае, я говорю об опасностях - которые могу быть дальше, когда человеку, как вариант - предложили использовать глобальную переменную
нахрена давать такие советы при должно пояснении - что - да - так и так - в конкретной ситуации - гавно вопрос
он же для себя за правило возьмёт и потом сколько ему нужно будет умом доходить, что для расширяемости функционала не нужно писать 8 функций, а достаточно одной, просто меняя аргумент коннекта
бля, мы на одном место топчимся в споре
никто не кому не должен,, спора нет, для чё ответы такие ответы давать то?
я бля буду, если ответчик не знал о существовании холиваров, даже на нашем форуме, на эту тему.
это уже 2й человек, первый был Arh, на моей памяти.
для меня глобал остался в 2000хных, опять же из примеров из рунета
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Цитата (Игорь_Vasinsky @ 22.02.2017 - 17:04) |
да уйма, чё щас фантазировать, не будем уходить далеко от темы |
Нет, ни кто никуда не уходит. Есть конкретный пример, есть конкретная рекомендация. Не юзать glоbal в данном случае. Хотелось бы увидеть эксплойт. Именно для коннекта. И именно в данном контексте.
Никаких множественных коннектов тут нет и быть не может, ты сам это понимаешь. Человеку, не знакомому с областью видимости, об этом говорить вообще моветон.
Ты говоришь об опасностях, приведи конкретный пример. Где и при каких обстоятельствах может возникнуть опасность переопределения этой переменной. Именно этой.
Иначе мы рассуждаем о global, как о коне в вакууме. Сферическом. А это не дело для такой точной науки, как программирование. :)
Цитата (Игорь_Vasinsky @ 22.02.2017 - 17:04) |
я ещё раз повторяюсь, я не говорю про вред в конкретном случае, я говорю об опасностях - которые могу быть дальше, когда человеку, как вариант - предложили использовать глобальную переменную |
Правильно предложили в данном случае. А фантазировать, что там дальше будет, это не дело. Сам разберется. По крайней мере будет знать, что это такое - global.
А так можно много чего напридумать. К примеру, что нельзя использовать (о ужас!) eval(). Да много чего, так можно до
strip_tags(htmlspecialchars(trim(stripslashes(........
докатиться.
Если где то кто то с дуру заюзал инструмент не по делу, это не значит, что нужно хором кричать - ЗЛО!!!
Цитата (Игорь_Vasinsky @ 22.02.2017 - 17:04) |
для меня глобал остался в 2000хных, опять же из примеров из рунета |
Вот именно. Ты просто вычеркнул его из жизни. И теперь считаешь, что те, кто юзает сей инструмент - лохи.
Если бы это было так, его бы давно объявили deprecated как минимум. Ан нет. Так кто лох получается? :)
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Игорь_Vasinsky
22.02.2017 - 22:10
д. Коль, стоит ли пускать начинающего прогера по всем терниям того пути, которого можо избежать, при этом заметь - я аргументирую своё мнение
ты каждый раз утверждаешь - конкретный случай, конкретный случай.
я же наоборот говорю - чтобы не биться головой об стену - нужно изначально проложить правильный путь
Цитата |
strip_tags(htmlspecialchars(trim(stripslashes(........ |
да ну нах, это край
Цитата |
что нужно хором кричать - ЗЛО!!! |
яж в соло, при этом - доводы мои как же, да, они тебя не убеждают, но при этом ты не говоришь о том что моё мнение не верно, кстати я не сам к нему пришёл, я же пишу аргументы
Цитата |
И теперь считаешь, что те, кто юзает сей инструмент - лохи.
|
у меня такой чевовек бы не прошёл бы тестовое задание
Цитата |
Если бы это было так, его бы давно объявили deprecated как минимум. Ан нет. Так кто лох получается?  |
нет, они везде, главно правильн это использовать, я на данном примере привёл доводы - против.
Цитата |
К примеру, что нельзя использовать (о ужас!) eval(). |
да ну.
моно даже мухоморы варить и есть.
но ТС не похож на шеф - повара.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
FatCat
22.02.2017 - 22:32
Цитата (Игорь_Vasinsky @ 22.02.2017 - 21:10) |
нужно изначально проложить правильный путь |
ИМХО, использовать там, где использовать удобней.
Например, в движке форума есть массив "форум" с вложенными массивами "пользователь", "топик" и т.д. К примеру, у тебя под аватаркой выводится "Пользователь №: 21350". Цифра берется из $ibforums->member['id']. А ник - $ibforums->member['name']. А айдишник топика - $ibforums->input['t'].
Мне удобней прописать в функции "global $ibforums", чем передавать десятки параметров.
В простых случаях, когда функция считает время пребывания на форуме, никаких "global"; функции передается время регистрации, а текущее время она знает сама.
Цитата (twin @ 22.02.2017 - 20:47) |
А так можно много чего напридумать. К примеру, что нельзя использовать (о ужас!) eval(). |
Поддержу, что лучше не использовать.
Тут недавно коллеге помогал. Взломали хостинг, натолкали всякой дряни. Старый сайт на старой джумле; обновлять джумлу не вариант, ибо потеряется огромная куча добавленного за годы самописа. Уязвимость нашли, залатали, осталось троянов вычистить. Один и тот же троян, но каждый раз по-разному шифрованный; но всегда eval. Я попробовал простым текстовым поиском по файлам, а у самой джумлы сотни файлов с этим оператором...
_____________
Бесплатному сыру в дырки не заглядывают...
Цитата (Игорь_Vasinsky @ 22.02.2017 - 18:10) |
тоит ли пускать начинающего прогера по всем терниям того пути, которого можо избежать |
Тут вот в чем печенька. Тебя в свое время кто-то сильно напугал. Ты сам признаешь:
Цитата (Игорь_Vasinsky @ 22.02.2017 - 18:10) |
кстати я не сам к нему пришёл, я же пишу аргументы |
Аргументы ты пишешь общие, без конкретики. И сейчас, именно в данный момент, ты точно так же пугаешь ТС. Причем жестко. Мол:
Цитата |
вам походу надо столкнуться с проблемой глобальных переменных - чтобы понять это. |
Так вот. Если пугаешь, аргументируй четко. С какой проблемой он столкнется в данном случае?
Чем в данном конкретном случае это опасно. Иначе ты убиваешь для него возможность юзать global вообще. Собственно, как кто-то убил для тебя эту возможность раньше, да еще так, что ты других пугаешь.
А это на самом деле вполне удобный и полезный инструмент. Советую внимательно разобраться в коде, который ты так скондочка объявил "самописными тестами":
Цитата |
да это кто-то самописеные тесты за пулил, их видать не особо и смотрели |
И понять, почему там это используется. А если совсем неймется, попробуй переписать на "рассово верный" вариант. И сравнить, сделав вывод - надо ли так с точки зрения рациональности.
Кстати, про пространство имен. Не понимаю претензии. Вполне обосновано, могу объяснить.
Цитата (Игорь_Vasinsky @ 22.02.2017 - 18:10) |
я на данном примере привёл доводы - против. |
Не увидел. Еще раз. Покажи эксплойт, как можно
на данном примере переопределить переменную. Только обоснованно. Случайности не канают.
Я тебе скажу чесно - я не могу ответить на этот вопрос. Потому и задаю его. Может я чего не догоняю...
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Цитата (FatCat @ 22.02.2017 - 18:32) |
Поддержу, что лучше не использовать. |
Бояться использовать eval(), это тоже самое, что бояться использовать PHP. Открой юзеру доступ, вот и вся недолга.
А Джумла, это отдельная песня.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Игорь_Vasinsky
22.02.2017 - 23:39
Цитата |
Мне удобней прописать в функции "global $ibforums", чем передавать десятки параметров. |
господи... там же работа с объектами...
вот о чём я и говорю - епанём ка там глобал, не страшно. разве у классов там мало инструметов при работе с данными ?
это получается этот движек переписан под нужды, при этом приемущества работы с объектами там полностью игнорются?
Цитата |
Так вот. Если пугаешь, аргументируй четко. С какой проблемой он столкнется в данном случае? |
уф. в данном случае он может даже коннект создать и в теле функции, я не удивлюсь теперь если ты дажеэто одобришь..
Цитата |
Тебя в свое время кто-то сильно напугал. |
хер там, сначала сказали, я даже не вникал, потом начал изучать эту тему, понял вред, нет, я понимаю приимущества, но вреда то больше
Цитата |
И понять, почему там это используется. А если совсем неймется, попробуй переписать на |
цсс, 1. я не нанимался, 2.тыж слышишь мою позицию
Цитата |
Чем в данном конкретном случае это опасно. |
да ёпаны в рот, я для кого пишу эти простыни?
Цитата |
И сравнить, сделав вывод - надо ли так с точки зрения рациональности. |
я чё буквы на клаве щас стираю для диалога пустого? вывод сделан
Цитата |
Не увидел. Еще раз. Покажи эксплойт, как можно на данном примере переопределить переменную. Только обоснованно. Случайности не канают. |
уф.
я же выше писал.
пишешь ты функцию, именно функцию, не просто для того чтобы была функция, а как щас есть пакаджист
есть у тебя в функции зависимость в переменной, значит при любой попытки использования этой функции где либо, бля, может у коллеги, может у Васи из Аргентины - ты заставляешь его эту зависимость удовлетворить.
я хз как ещё объяснить.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
На самом дела я два раза правил свой ответ. И при первом редактировании добавил вариант, примерно такой-же как ты запостил. То есть - передавал в функцию переменную коннекта. И написал что это поможет для работ с разными БД (но не с этой конкретной функцией)
Но потом подумал, что задача ТС, так сказать, облегчить себе жизнь максимально ( раз для стандартной функции экранирования, решил запилить свою функцию). И удалил все это.
И да, раньше я активно использовал global, порой у меня в нем было 5-6+(!) переменных ( это даже до сих пор где-то используется ). Но от этой практики я отошел.
Игорь_Vasinsky
23.02.2017 - 00:55
лан лан, мир )
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Ты так и не понял.
Ты огульно обвинил global во всех смертных грехах скопом. А я говорю, что нужно рассматривать каждый конкретный пример с точки зрения рациональности.
Давай попробую растолковать.
Что представляет из себя функция ТС? Это классическая обертка. Для чего применяются обертки? Для упрощения использования штатной функции. В данном случае:
1. Для сокращения кода. Потому что mysqli_real_escape_string(), это довольно длинно. Но это не главное.
2. Для того, чтобы уменьшить количество аргументов.
По твоей схеме линк нужно тащить везде. Если запрос находится в другой функции (что очевидно), то и в неё нужно передать этот линк аргументом. И так далее, по цепочке. А это уже усложнение, путаница и связанность.
Вся прелесть global в конкретном случае именно в том, что можно избавиться от лишнего аргумента.
Переопределить переменную коннекта в данном случае просто негде. Она используется в обертках и не более. Для того обертка и нужна, чтобы забыть про этот линк.
Конечно, можно там класс нарисовать, сделать синглтон, вызвать в обертке метод, но ведь это по сути эмуляция global. А зачем???
Ответ на поверхности. Потому что паранойя. global - ЗЛО. Ни дать ни взять. И незачем рассуждать, доктор сказал в морг, значит в морг.
А я смею утверждать, что поциент скорее жив, чем мертв. И в данном конкретном случае global, это то, что нужно. Лучшее решение из возможных. Просто нужно перестать дуть на воду, обжегшись на молоке.
Цитата (Игорь_Vasinsky @ 22.02.2017 - 19:39) |
значит при любой попытки использования этой функции где либо, бля, может у коллеги, может у Васи из Аргентины - ты заставляешь его эту зависимость удовлетворить. |
Я уже спрашивал, в чем
тут отличие global от аргумента? Все равно нужно передать аргументом то, от чего
зависит функция. Это вообще то инфраструктура называется. И никакой разницы
как это передать. Здесь важно
что передается.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Another Reality
23.02.2017 - 10:06
Цитата (twin @ 23.02.2017 - 04:55) |
Цитата (Игорь_Vasinsky @ 22.02.2017 - 19:39) | значит при любой попытки использования этой функции где либо, бля, может у коллеги, может у Васи из Аргентины - ты заставляешь его эту зависимость удовлетворить. |
Я уже спрашивал, в чем тут отличие global от аргумента? Все равно нужно передать аргументом то, от чего зависит функция. Это вообще то инфраструктура называется. И никакой разницы как это передать. Здесь важно что передается. |
Я думаю, что он также имел ввиду такой момент, когда у Васи из Аргентины где-то в коде уже есть глобальная переменная с таким же именем, но у него $conn - это не connect, а contraception, получяется проблемка
Цитата (Another Reality @ 23.02.2017 - 06:06) |
Я думаю, что он также имел ввиду такой момент, когда у Васи из Аргентины где-то в коде уже есть глобальная переменная с таким же именем, но у него $conn - это не connect, а contraception, получяется проблемка |
Ну да это проооблееема!
Чувак же офигенную функцию для опенсорса написал. Бедный Вася из Аргентины. Что жил - то зря.
contraception кстати не канает. Там два n в его переменной.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Игорь_Vasinsky
23.02.2017 - 11:11
ну ептю я 100500 раз из месаджа в месадж пишу - не важен тут конкретный пример.
это моё мнение по этому вопросу. и я описал недастатки такого приёма
при этом, в моей практике в связи с отказв от глобальных переменных я и не ощущал дискомфорта, который они могут вызвать
это как ситуация с большой лужей, можно каждый день ходить мимо, а потом наступить - придётся сушить обувь. - зачем? когда зная об опасности можно обходить с другой стороны.
Цитата |
Лучшее решение из возможных. |
нет. ещё раз спрашиваю - для чего у функции есть аргументы?
Цитата |
Чувак же офигенную функцию для опенсорса написал. Бедный Вася из Аргентины. Что жил - то зря |
бля, как со стеной.
я ещё раз настаиваю на своём мнении - лучше сразу избегать, чем потом гуглить темы типа - реабилитация после курсов жени попова.
эта функция будет для конкретного места, чтобы её использовать в другом месте нужно будет знать как назвать коннект или править переменную в функции.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Цитата (Игорь_Vasinsky @ 22.02.2017 - 17:03) |
бля, ну скока можно. почему не так? function a($conn,$a) { return mysqli_real_escape_string($conn,$a); } ??? вам походу надо столкнуться с проблемой глобальных переменных - чтобы понять это. и не важно - что он пишет один и херню, он на этапе получения навыков или вы ждёте ещё одну тему реабилитации ??? ТС - у тебя переменная в теле функции, она находится в теле функции - это локальная область видимости, все переменные вне функции для функции не известны. используй аргументы - чтобы передать данные во внутрь функции - чтобы функция имела к ним доступ. |
Здравствуйте! Спасибо за ответы, но мне подошел вариант с global
в этом варианте, через аргументы, я подставил переменную коннекта, пишет так
Warning: Missing argument 2 for a(), called in F:\home\localhost\www\site\index.php on line 328 and defined in F:\home\localhost\www\site\index.php on line 6
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in F:\home\localhost\www\site\index.php on line 19
Быстрый ответ:
Powered by dgreen