Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
Подскажите, как лучше сделать? Есть скрипт, в котором выполняется include("../lib/checks.php"). В файле checks.php выполняется куча различных проверок. Примерно так: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Таких проверок много и количество вложенных if слишком большое. Хотелось бы переписать примерно так: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Но именно так нельзя, потому что break с верхнего уровня не выполняется. Не подскажите, как лучше сделать? Желательно более удобное и читаемое, чем такое: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 13:42 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
Alibek B., непонятно, в чем проблема то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 13:54 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
Вот более реальный код: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. То есть между проверками есть еще какой-то код и в этом случае его также нужно будет заключать внутрь проверки на !$stop. Пока что я просто использую goto вместо break и все работает. Но может быть есть что-то более правильное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 14:25 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
Alibek B., Alibek B.проверки на !$stop. Пока что я просто использую goto вместо break и все работает. где тут $stop и где тут GOTO? говорите об одном коде, а показываете другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 14:30 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
Оформить всю кучу проверок как функцию и возвращать Код: php 1. по мере обнаружения. В вызывающей программе проверять возвращаемое значение. Не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 14:42 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
vkleОформить всю кучу проверок как функцию и возвращать Код: php 1. по мере обнаружения. В вызывающей программе проверять возвращаемое значение. Не? скажу даже больше... результатом функции include является результат возвращаемый скриптом. потому: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 14:56 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
автор$ret = 'error1'; return false; запомните это дети и никогда больше так не делайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 14:59 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
ScareCrowавтор$ret = 'error1'; return false; запомните это дети и никогда больше так не делайте. ))) К словам придираетесь, уважаемые? Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 15:06 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
ПрограмёрScareCrowпропущено... запомните это дети и никогда больше так не делайте. ))) К словам придираетесь, уважаемые? Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. вот так тоже не делайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 15:11 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
r uговорите об одном коде, а показываете другой. Если мой код переписать так, как я предположил в конце первого сообщения (с помощью переменной $stop и ленивой проверки условий), то для промежуточных процедур нужно будет использовать дополнительные проверки $stop. vkleОформить всю кучу проверок как функцию и возвращать return код_ошибки Можно конечно и так. Но тогда в этой функции нужно будет объявлять global для множества различных переменных и что-то можно будет упустить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 15:12 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
авторif (include("subscript.php")=='ok') кстати так не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 15:14 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторif (include("subscript.php")=='ok') кстати так не работает. а как работает? ))) блин... ну видите синтаксическую ошибку, какого фига не написать "тут ошибся, вот сюда скобку надо"?!!! Ну понятно, человек такой, ничё не поделать... Насчёт "так не делайте" - да не хочу я общаться с тобой на эту тему... не хочешь - не делай, только вот если есть причина так не делать, то её надо описывать, а до того - это лично твоё мнение. Вот проверенный вариант: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 15:49 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
поддерживаю. меня тоже заинтиговало почему не делать??? если чисто ради супер пупер парапупер кодинга, аля возвращать всегда код, притом не числом а константой, и проверки константой то это ладно, но подзреваю что сдесь ещо какаято причина??? ответь пожалуста, почему не делать так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 17:24 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
alex564657498765453поддерживаю. меня тоже заинтиговало почему не делать??? если чисто ради супер пупер парапупер кодинга, аля возвращать всегда код, притом не числом а константой, и проверки константой то это ладно, но подзреваю что сдесь ещо какаято причина??? ответь пожалуста, почему не делать так? все что что-то возвращает должно возвращать либо правильный ответ либо исключение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 17:33 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
ScareCrowalex564657498765453поддерживаю. меня тоже заинтиговало почему не делать??? если чисто ради супер пупер парапупер кодинга, аля возвращать всегда код, притом не числом а константой, и проверки константой то это ладно, но подзреваю что сдесь ещо какаято причина??? ответь пожалуста, почему не делать так? все что что-то возвращает должно возвращать либо правильный ответ либо исключение. а-а... ну всё понятно ))) А теперь главный вопрос, а кто сказал что "error1" или "error2" являются "неправильными" ответами? Вполне себе нормальная ситуация, человек проверяет состояние некоторого компонента (например некой модели) и смотрит: 1. Заполнено ли название. Если не заполнено вернуть "error1" (ну или логичнее вернуть "Не заполнено название"). 2. Заполнено ли количество. Если не заполнено вернуть "error2" (ну или логичнее вернуть "Не заполнено количество элементов"). 3. Заполнено ли описание. Если не заполнено вернуть "error3" (ну или логичнее вернуть "Не заполнено описание"). А потом на выход отправляется этот текст ошибки, который выводится пользователю. Почему только один - например интерфейс предусматривает поле для вывода ошибки ввода (разумеется только одной ошибки). P.S. Так что я говорю, без описания причины "так не делайте" - всегда Ваше личное мнение. Вот Вы посчитали что тут так, а реально тут может быть совсем и не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 17:53 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
Програмёр, ну он имел ввиду немного другое. сточки зрения космической архитектуры, любая функция, не знает, где имено будет код, умеющий обработать "косяк" и бросая исключение, это гарантия что при косяк-детектид, мы попадём в код, который знает что в этой ситуации делать. а почему космическая архитектура...да потому что тогда любую строчку надо заключать в трайкетч, а чего мелочиться ведь оператор сложения это тоже функция, делает автоприведения типов, а откуда мы знаем что перед сумой учтено, что строка + число это исключение, а не равно числу(ибо строка - 0) ЗЫ в твоём случае всётаки лучше код возврата - мне так кажеться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 18:06 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
авторА теперь главный вопрос, а кто сказал что "error1" или "error2" являются "неправильными" ответами? Вполне себе нормальная ситуация, человек проверяет состояние некоторого компонента (например некой модели) и смотрит: а теперь посмотрите как это у нормальных людей сделанно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 18:37 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторА теперь главный вопрос, а кто сказал что "error1" или "error2" являются "неправильными" ответами? Вполне себе нормальная ситуация, человек проверяет состояние некоторого компонента (например некой модели) и смотрит: а теперь посмотрите как это у нормальных людей сделанно. плиин, ну опять...а пример кода!!! это очень абстрактно у нормальных людей. вот на википедии написано, что МВЦ большинство пхп програмистов понимают не верно, и вот куда смотреть к нормальным людям? а если в зенд, так там неделями можно смотреть пока поймёшь их концепцию... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 19:47 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
автора если в зенд, так там неделями можно смотреть пока поймёшь их концепцию... медитируй, это полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 21:50 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
150 раз уже обсасывали эту тему на форумах (и десятки раз наверное на этом форуме). Ну что же... повторим: Исключения - это маяк исключительной ситуации. Ситуации, за которую я как программист некоторого компонента не могу нести ответственность. 1. Ну например, я читаю данные из базы, и внутри функции чтения оказывается что не был передан идентификатор соединения. Работа функции далее бесполезна. Можно вернуть false, но лучше бросить исключение, так как и последующая программа скорее всего будет работать неверно. 2. Например, я отправляю данные через сокет, и вдруг физически рвётся соединение. Я как программист программы передачи данных не имею влияния на данную ситуацию и ничего с ней сделать не могу. Можно передать false, но лучше бросить исключение, так как и последующая программа скорее всего будет работать неверно. 3. Например, я читаю книжку. И дойдя до 125 страницы понимаю, что страниц больше нету, но текст оборвался на полуслове. Можно закрыть книжку и пойти спать (вернуть false), но лучше пойти в магазин и потребовать объяснений (бросить исключение), так как и последующая программа (чтение следующей книги из серии) скорее всего будет работать неверно. 1. Однако, я читаю из базы данные, и мне возвращается пустой массив (данные не найдены). Можно бросить исключение, но... лучше вернуть false, ведь вполне нормально, что на сайте нету например книжек на букву "ъ". 2. Однако, я принимаю данные через сокет и вдруг поток данных заканчивается (длина очередной порции равна нулю). Можно бросить исключение, но... лучше вернуть false, ведь вполне нормально что я принял всё, что мне отправляли и ничего страшного в окончании приёма данных нету, программа продолжает функционировать в штатном режиме. 3. Однако, я читаю книгу. Дойдя до 250-ой страницы, я понимаю, что она закончилась, пошло описание разных терминов, прослеживается законченность мысли, но не прослеживается законченность идеи. Можно конечно пойти в магазин и потребовать объяснений, почему рассказ продаётся по частям, но лучше закрыть книгу и лечь спать :) А завтра пойти в магазин и в штатном режиме купить очередную книгу из серии. Потому бросание исключений по каждому чиху - это бред. Если моя функция предусматривает на выходе варианты "name is empty", "number is empty", "content is empty" и "ok" , то нету смысла для первых трёх вариантов бросать исключения. Ведь моя функция именно так и документирована Код: php 1. 2. 3. 4. 5. Потому поведение неправильного ввода является штатным. И "уважаемый(ая)" ScareCrow, давайте впредь не троллить участников форума. Уж не знаю почему модераторы закрывают на это глаза, но Вам место в ветке ПТ. С Вашим интересом просто ля... сказать, Вам ветка с обычным трёпом ни о чём принесёт много радости :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 22:55 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
Не хочу, конечно, никого обидеть, но все фрагменты кода приведенные тут, являются, ИМХО, - говнокодом, кой писать не стоит. Написав таким образом большой проект вы замучаетесь его потом поддерживать, особенно когда года через 2 забудете сами что да как там работает. Не говоря уже о том, что поддержка достанется кому-то другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2014, 09:36 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
Пусть даже это будут не исключения, объявите в подключаемом файле внятно называнную функцию с внятными параметрами и используйте ее. Лучше даже вынести в какой-то класс. А если использовать автоподгрузку то можно вообще забыть про эти все include. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2014, 09:39 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
HettНе хочу, конечно, никого обидеть, но все фрагменты кода приведенные тут, являются, ИМХО, - говнокодом, кой писать не стоит. Написав таким образом большой проект вы замучаетесь его потом поддерживать, особенно когда года через 2 забудете сами что да как там работает. Не говоря уже о том, что поддержка достанется кому-то другому. сам я так не пишу, так как почти все приложения проектирую с использованием ООП, на больших проектах это разумеется удобнее структурного программирования. Однако, чем приведённый код будет усложнять поддержку в случае если весь сайт написан функциями, без использования объектов? А теперь ещё интереснее... представим, что у нас есть некий набор данных, и есть некоторый набор модулей. Так вот, каждый модуль использует только определённую часть из входных данных. При этом задача максимально упростить встраивание в систему нового модуля. А вызов модуля происходит по пути (то есть явно вводится пользователем). Какая система модулей в данном случае самая простая? Правильно... единственный файл, который можно загрузить по имени не передавая в него весь список доступных аргументов явно. А модуль уж сам разберётся, что ему из данных надо, а что нет. Придумайте систему, которую было бы проще чем эту поддерживать и расширять. :) Если предложите вариант проще, я покорно соглашусь что не прав :) P.S. Варианты, где все используемые данные заталкиваются в один массив не предлагать, потому как именно это точно поддерживать невозможно. Поверьте, я знаю И теперь уже знаю что значит поддерживать проект, в котором модуль привязывается к сайту через специальную функцию внутрь которой передаётся предела 30 аргументов. Просто документация к этой системе велась посредственно, а в какой-то момент её вообще не стало :) Так что, в поддержание слова "говнокод" жду не говнокод в ответ :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2014, 10:30 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
авторОднако, чем приведённый код будет усложнять поддержку в случае если весь сайт написан функциями, без использования объектов? Хотя бы тем, что тут даже функций то и нет, вместо ее вызывается оператор include. Который юзает глобальный набор переменных и может менять их значение или вовсе удалять их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2014, 11:02 |
|
||
|
PHP: Завершить выполнение кода из include-файла
|
|||
|---|---|---|---|
|
#18+
ПрограмёрТак что, в поддержание слова "говнокод" жду не говнокод в ответ :) Думаю как завернуть этот же код хотя бы в функцию вы себе представить можете, поэтому не вижу смысла тратить время на ерунду, доказывая что-то тут :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2014, 11:04 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38659092&tid=1462721]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 344ms |

| 0 / 0 |
