powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Завершить выполнение кода из include-файла
54 сообщений из 54, показаны все 3 страниц
PHP: Завершить выполнение кода из include-файла
    #38658664
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, как лучше сделать?
Есть скрипт, в котором выполняется include("../lib/checks.php").
В файле checks.php выполняется куча различных проверок. Примерно так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
if (check1) {
  if (check2) {
    if (check3) {
      $ret = 'ok';
    } else {
      $ret = 'error3';
    }
  } else {
    $ret = 'error2';
  }
} else {
  $ret = 'error1';
}



Таких проверок много и количество вложенных if слишком большое.
Хотелось бы переписать примерно так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
if (!check1) {
  $ret = 'error1';
  break;
}
if (!check2) {
  $ret = 'error2';
  break;
}
if (!check3) {
  $ret = 'error3';
  break;
}
$ret = 'ok';



Но именно так нельзя, потому что break с верхнего уровня не выполняется.
Не подскажите, как лучше сделать?
Желательно более удобное и читаемое, чем такое:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
$stop = null
if (!$stop && !check1) {
  $ret = 'error1';
  $stop = true;
}
if (!$stop && !check2) {
  $ret = 'error2';
  $stop = true;
}
if (!$stop && !check3) {
  $ret = 'error3';
  $stop = true;
}
if (!$stop) {
  $ret = 'ok';
}



________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38658689
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

непонятно, в чем проблема то?
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38658757
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот более реальный код:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
$var1 = ...;
if ($var1) {
  $res = dbquery($var);
  $var2 = func2($res['field']);
  if ($var2 === '123') {
    $var3 = func3($res['code']);
    if (check3) {
      $ret = 'ok';
    } else {
      $ret = 'error3';
    }
  } else {
    $ret = 'error2';
  }
} else {
  $ret = 'error1';
}


То есть между проверками есть еще какой-то код и в этом случае его также нужно будет заключать внутрь проверки на !$stop.

Пока что я просто использую goto вместо break и все работает.
Но может быть есть что-то более правильное.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38658773
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,


Alibek B.проверки на !$stop.
Пока что я просто использую goto вместо break и все работает.
где тут $stop и где тут GOTO?
говорите об одном коде, а показываете другой.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38658807
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оформить всю кучу проверок как функцию и возвращать
Код: php
1.
return код_ошибки;

по мере обнаружения. В вызывающей программе проверять возвращаемое значение. Не?
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38658829
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleОформить всю кучу проверок как функцию и возвращать
Код: php
1.
return код_ошибки;

по мере обнаружения. В вызывающей программе проверять возвращаемое значение. Не?

скажу даже больше... результатом функции include является результат возвращаемый скриптом.
потому:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
//main script
if (include "subscript.php"){echo "all right";}


//subscript.php
if (!check1) {
  $ret = 'error1';
  return false;
}
if (!check2) {
  $ret = 'error2';
  return false;
}
if (!check3) {
  $ret = 'error3';
  return false;
}
return true;
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38658834
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор$ret = 'error1';
return false;

запомните это дети и никогда больше так не делайте.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38658844
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавтор$ret = 'error1';
return false;

запомните это дети и никогда больше так не делайте.

))) К словам придираетесь, уважаемые?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
//main script
if (include("subscript.php")=='ok'){echo "all right";}


//subscript.php
if (!check1) {
  return 'error1';
}
if (!check2) {
  return 'error2';
}
if (!check3) {
  return 'error3';
}
return 'ok';
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38658854
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрScareCrowпропущено...


запомните это дети и никогда больше так не делайте.

))) К словам придираетесь, уважаемые?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
//main script
if (include("subscript.php")=='ok'){echo "all right";}


//subscript.php
if (!check1) {
  return 'error1';
}
if (!check2) {
  return 'error2';
}
if (!check3) {
  return 'error3';
}
return 'ok';



вот так тоже не делайте.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38658856
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uговорите об одном коде, а показываете другой.
Если мой код переписать так, как я предположил в конце первого сообщения (с помощью переменной $stop и ленивой проверки условий), то для промежуточных процедур нужно будет использовать дополнительные проверки $stop.

vkleОформить всю кучу проверок как функцию и возвращать return код_ошибки
Можно конечно и так.
Но тогда в этой функции нужно будет объявлять global для множества различных переменных и что-то можно будет упустить.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38658864
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторif (include("subscript.php")=='ok')

кстати так не работает.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38658916
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
<?php
   //main script
if ((include "input.txt")=='ok'){echo "all right";}else{echo "not right";}

?>

<?php
//subscript.php
if (!$check1) {
  return 'error1';
}
if (!$check2) {
  return 'error2';
}
if (!$check3) {
  return 'error3';
}
return 'ok';
?>
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38659092
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поддерживаю. меня тоже заинтиговало почему не делать???

если чисто ради супер пупер парапупер кодинга, аля возвращать всегда код, притом не числом а константой, и проверки константой то это ладно, но подзреваю что сдесь ещо какаято причина???

ответь пожалуста, почему не делать так?
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38659101
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453поддерживаю. меня тоже заинтиговало почему не делать???

если чисто ради супер пупер парапупер кодинга, аля возвращать всегда код, притом не числом а константой, и проверки константой то это ладно, но подзреваю что сдесь ещо какаято причина???

ответь пожалуста, почему не делать так?

все что что-то возвращает должно возвращать либо правильный ответ либо исключение.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38659127
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowalex564657498765453поддерживаю. меня тоже заинтиговало почему не делать???

если чисто ради супер пупер парапупер кодинга, аля возвращать всегда код, притом не числом а константой, и проверки константой то это ладно, но подзреваю что сдесь ещо какаято причина???

ответь пожалуста, почему не делать так?

все что что-то возвращает должно возвращать либо правильный ответ либо исключение.

а-а... ну всё понятно )))

А теперь главный вопрос, а кто сказал что "error1" или "error2" являются "неправильными" ответами? Вполне себе нормальная ситуация, человек проверяет состояние некоторого компонента (например некой модели) и смотрит:
1. Заполнено ли название. Если не заполнено вернуть "error1" (ну или логичнее вернуть "Не заполнено название").
2. Заполнено ли количество. Если не заполнено вернуть "error2" (ну или логичнее вернуть "Не заполнено количество элементов").
3. Заполнено ли описание. Если не заполнено вернуть "error3" (ну или логичнее вернуть "Не заполнено описание").

А потом на выход отправляется этот текст ошибки, который выводится пользователю.

Почему только один - например интерфейс предусматривает поле для вывода ошибки ввода (разумеется только одной ошибки).


P.S. Так что я говорю, без описания причины "так не делайте" - всегда Ваше личное мнение. Вот Вы посчитали что тут так, а реально тут может быть совсем и не так.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38659141
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

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

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

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

ведь оператор сложения это тоже функция, делает автоприведения типов, а откуда мы знаем что перед сумой учтено, что строка + число это исключение, а не равно числу(ибо строка - 0)

ЗЫ
в твоём случае всётаки лучше код возврата - мне так кажеться.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38659179
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА теперь главный вопрос, а кто сказал что "error1" или "error2" являются "неправильными" ответами? Вполне себе нормальная ситуация, человек проверяет состояние некоторого компонента (например некой модели) и смотрит:

а теперь посмотрите как это у нормальных людей сделанно.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38659229
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавторА теперь главный вопрос, а кто сказал что "error1" или "error2" являются "неправильными" ответами? Вполне себе нормальная ситуация, человек проверяет состояние некоторого компонента (например некой модели) и смотрит:

а теперь посмотрите как это у нормальных людей сделанно.

плиин, ну опять...а пример кода!!!
это очень абстрактно у нормальных людей.
вот на википедии написано, что МВЦ большинство пхп програмистов понимают не верно, и вот куда смотреть к нормальным людям?

а если в зенд, так там неделями можно смотреть пока поймёшь их концепцию...
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38659345
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автора если в зенд, так там неделями можно смотреть пока поймёшь их концепцию...
медитируй, это полезно.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38659374
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
<?php
/**
 * Возвращает текст ошибки ввода или ok в случае правильного ввода данных
 */
?>


Потому поведение неправильного ввода является штатным.

И "уважаемый(ая)" ScareCrow, давайте впредь не троллить участников форума. Уж не знаю почему модераторы закрывают на это глаза, но Вам место в ветке ПТ. С Вашим интересом просто ля... сказать, Вам ветка с обычным трёпом ни о чём принесёт много радости :)
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662207
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не хочу, конечно, никого обидеть, но все фрагменты кода приведенные тут, являются, ИМХО, - говнокодом, кой писать не стоит. Написав таким образом большой проект вы замучаетесь его потом поддерживать, особенно когда года через 2 забудете сами что да как там работает. Не говоря уже о том, что поддержка достанется кому-то другому.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662214
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пусть даже это будут не исключения, объявите в подключаемом файле внятно называнную функцию с внятными параметрами и используйте ее. Лучше даже вынести в какой-то класс. А если использовать автоподгрузку то можно вообще забыть про эти все include.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662264
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettНе хочу, конечно, никого обидеть, но все фрагменты кода приведенные тут, являются, ИМХО, - говнокодом, кой писать не стоит. Написав таким образом большой проект вы замучаетесь его потом поддерживать, особенно когда года через 2 забудете сами что да как там работает. Не говоря уже о том, что поддержка достанется кому-то другому.

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

А теперь ещё интереснее... представим, что у нас есть некий набор данных, и есть некоторый набор модулей. Так вот, каждый модуль использует только определённую часть из входных данных. При этом задача максимально упростить встраивание в систему нового модуля. А вызов модуля происходит по пути (то есть явно вводится пользователем). Какая система модулей в данном случае самая простая?

Правильно... единственный файл, который можно загрузить по имени не передавая в него весь список доступных аргументов явно. А модуль уж сам разберётся, что ему из данных надо, а что нет.

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

P.S. Варианты, где все используемые данные заталкиваются в один массив не предлагать, потому как именно это точно поддерживать невозможно. Поверьте, я знаю И теперь уже знаю что значит поддерживать проект, в котором модуль привязывается к сайту через специальную функцию внутрь которой передаётся предела 30 аргументов. Просто документация к этой системе велась посредственно, а в какой-то момент её вообще не стало :)

Так что, в поддержание слова "говнокод" жду не говнокод в ответ :)
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662313
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОднако, чем приведённый код будет усложнять поддержку в случае если весь сайт написан функциями, без использования объектов?

Хотя бы тем, что тут даже функций то и нет, вместо ее вызывается оператор include. Который юзает глобальный набор переменных и может менять их значение или вовсе удалять их.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662318
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрТак что, в поддержание слова "говнокод" жду не говнокод в ответ :)
Думаю как завернуть этот же код хотя бы в функцию вы себе представить можете, поэтому не вижу смысла тратить время на ерунду, доказывая что-то тут :)
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662340
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettПрограмёрТак что, в поддержание слова "говнокод" жду не говнокод в ответ :)
Думаю как завернуть этот же код хотя бы в функцию вы себе представить можете, поэтому не вижу смысла тратить время на ерунду, доказывая что-то тут :)

могу ))) Говорю же, что подобный код поддерживаю сейчас :)

Вот у нас умник какой-то завернул код в функцию, и теперь вызов функции, отвечающий за привязку модуля к админке выглядет вот так:
Код: php
1.
2.
3.
4.
5.
6.
7.
WritingEngine($CN1, $pageId, $actsite, $session_id, $page,
              $writestatus, $mode, $pageId_name, $Del, $menuname,
              $comment, $url, $file, $metadescr, $metakey, $title,
              $counters, $active, $visible, $printable, $year, $month, $day, $fio,
              $adminaction, $ulogin, $ipa, $ipb, $ipc, $ipd, $company,
              $email, $pass1, $pass2, $userId, $restoreword, $site,
              $param, $border, $UserId, $mysqlIds, $x, $y, $siteId,$eventact,$event_id,$title,$start,$end);



А прикольно то, что разумеется бОльшая часть модулей во всех этих данных и не нуждается вовсе, только в какой-то части...
А ведь система расширяется... и вскоре, если я не перепишу эту всю фигню как надо, туда ещё начнут переменные падать))

Ну как? удобнее стало, от того, что код в функцию завернули? или лучше было просто include вызывать с использованием только того, что надо модулю?
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662348
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О каких модулях вы вообще говорите, если у вас там все работает на функциях и вообще не пойми как? Если бы ли бы дейстительно модули, таких городушек бы не возникало. Для начала установите у себя в голове правильное понятие модульности.

PS^ В любом случае этот вариант лучше с простым инклюдом хотя бы тем, что из модуля переменные случайно не поменяются, а то потом будете неделю ошибку искать.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662350
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*вариант с функцией лучше варианта с простым иклюдом
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662465
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettО каких модулях вы вообще говорите, если у вас там все работает на функциях и вообще не пойми как?

Не понял ) А что, в структурном программировании модульность отменили? А как же например dll файлы написанные на Cи, они уже не являются модулями приложения? ))

Я ещё раз повторю задачу, есть список входных параметров, есть модули, которым из этого списка требуется лишь малая часть.

Ну например есть модуль личного кабинета (личные данные), который нуждается в знании данных пользователя для отображения, а есть модуль галереи, которой наплевать на данные пользователя, но обязательно требуется знать pageId для отображения правильного списка изображений, но в то же время есть модуль каталога, который предусматривает множество действий (просмотр товара, просмотр категории, управление товарами, управление категориями, сортировка, и т.д.), такому модулю надо знать pageId, $event_act, $UserId и возможно ещё какие-то данные. Есть модуль меню, которому надо знать тоже много разной инфы для работы. И тому подобное.

Как мне сделать систему единую для них всех, что бы потом её было легко расширять? Ведь для каждого модуля определять свою функцию загрузки - это убиться можно )) Тогда ядро движка уже не будет ядром, так как мне в его код надо будет лазить для включения нового модуля. Выход - универсальная функция, которая может подгрузить любой модуль. Вызов такой функции я привёл выше.
Второй выход - отказ от функции и вклинивание кода модуля в основной код ядра, что бы он работал с переменными движка и сам разбирал то, что ему нужно. Если появляется страх перед изменением переменных движка, то можно сделать так:
Код: php
1.
2.
3.
4.
5.
6.
<?php
loadModule1($arg1, $arg2, $arg3, $...);
function loadModule1($arg1, $arg2, $arg3, $...){
    //и тут сам код
}
?>


Однако в этом случае мы опять же не будем грузить в функцию модуля всё(!!!) что ему может понадобиться, а отдадим только нужное, и заниматься данными будет строго сам модуль, а не ядро. Ядро - оно просто эти данные готовит и грузит модуль через include, а уже модуль определяет что из них он будет пользовать.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662605
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНе понял ) А что, в структурном программировании модульность отменили? А как же например dll файлы написанные на Cи, они уже не являются модулями приложения? ))

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

авторЯ ещё раз повторю задачу, есть список входных параметров, есть модули, которым из этого списка требуется лишь малая часть.

Ну например есть модуль личного кабинета (личные данные), который нуждается в знании данных пользователя для отображения, а есть модуль галереи, которой наплевать на данные пользователя, но обязательно требуется знать pageId для отображения правильного списка изображений, но в то же время есть модуль каталога, который предусматривает множество действий (просмотр товара, просмотр категории, управление товарами, управление категориями, сортировка, и т.д.), такому модулю надо знать pageId, $event_act, $UserId и возможно ещё какие-то данные. Есть модуль меню, которому надо знать тоже много разной инфы для работы. И тому подобное.

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

авторКак мне сделать систему единую для них всех, что бы потом её было легко расширять? Ведь для каждого модуля определять свою функцию загрузки - это убиться можно ))

Ну да, проще сговнокодить. Да и в чем сложность то?

авторТогда ядро движка уже не будет ядром, так как мне в его код надо будет лазить для включения нового модуля.

Ядро движка, это че ваще такое?

Вы вообще нормальную архитектуру программы хоть раз видели?
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662628
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

А вместо пачки параметров единственный объект "контекст" никак не передать?
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662633
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
5.
6.
7.
WritingEngine($CN1, $pageId, $actsite, $session_id, $page,
              $writestatus, $mode, $pageId_name, $Del, $menuname,
              $comment, $url, $file, $metadescr, $metakey, $title,
              $counters, $active, $visible, $printable, $year, $month, $day, $fio,
              $adminaction, $ulogin, $ipa, $ipb, $ipc, $ipd, $company,
              $email, $pass1, $pass2, $userId, $restoreword, $site,
              $param, $border, $UserId, $mysqlIds, $x, $y, $siteId,$eventact,$event_id,$title,$start,$end);



А код ваш подверждает еще раз, что качество кода у вас хромает в проекте. Во первых если это функция модуля, то она названа не правильно, т.к. по ее названию не ясно, что это за модуль вообще, да и вообще что она делает не понятно и почему суффикс ing? Половина переменных в верблюжем синтаксисе, половина с подчеркиванием, часть с большой буквы, часть с маленькой, где-то вообще все в нижнем регистре. Названия переменных тоже хз че и где. Где-то после запятой пробелов нету местами.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662635
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилПрограмёр,

А вместо пачки параметров единственный объект "контекст" никак не передать?

Ну или хотя бы не единственный, даже несколько. В нормально приложении мог бы быть объект User из которого можно получить часть данных и т.п.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662637
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или пусть даже супер-объект с набором всех модулей к которым можно было обращаться.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662654
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилПрограмёр,

А вместо пачки параметров единственный объект "контекст" никак не передать?

неее ))) это не по условиям... у нас нету объектов :) А если объект = ассоциативный массив, то в чём разница? Получится то же самое, просто в EngineWrite сейчас передаётся несколько десятков аргументов явно, а в предложенном варианте они будут передаваться неявно (что ещё неудобнее).
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662660
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрИзопропилПрограмёр,

А вместо пачки параметров единственный объект "контекст" никак не передать?

неее ))) это не по условиям... у нас нету объектов :) А если объект = ассоциативный массив, то в чём разница? Получится то же самое, просто в EngineWrite сейчас передаётся несколько десятков аргументов явно, а в предложенном варианте они будут передаваться неявно (что ещё неудобнее).

масив удобней ...часто какието параметры могут не передаваться.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662662
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettИзопропилПрограмёр,

А вместо пачки параметров единственный объект "контекст" никак не передать?

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

НЕТУ ОБЪЕКТОВ ))) Вы условия не воспринимаете. Мы уходим от ООП, потому у нас нету объектов... Нету User... В лучшем случае есть getUserData которая вернёт хэш массив с данными.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662664
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453Програмёрпропущено...


неее ))) это не по условиям... у нас нету объектов :) А если объект = ассоциативный массив, то в чём разница? Получится то же самое, просто в EngineWrite сейчас передаётся несколько десятков аргументов явно, а в предложенном варианте они будут передаваться неявно (что ещё неудобнее).

масив удобней ...часто какието параметры могут не передаваться.

а я и так могу их не передавать )) Просто вместо них передавать заглушки типа null :) Но если вдруг появится модуль, которому нужна половина аргументов, то получим не очень удобный код
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662671
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрНо если вдруг появится модуль, которому нужна половина аргументов, то получим не очень удобный код
Как будто он щас удобный
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662685
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрНЕТУ ОБЪЕКТОВ ))) Вы условия не воспринимаете. Мы уходим от ООП, потому у нас нету объектов... ...
за ради интереса - а с чем связан уход от ООП?
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662695
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettавторНе понял ) А что, в структурном программировании модульность отменили? А как же например dll файлы написанные на Cи, они уже не являются модулями приложения? ))

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

авторТогда ядро движка уже не будет ядром, так как мне в его код надо будет лазить для включения нового модуля.

Ядро движка, это че ваще такое?

Вы вообще нормальную архитектуру программы хоть раз видели?

Начинаю терять интерес к беседе :) 2 секунды и википедия отвечает структурное программирование

Насчёт "ядро движка"... Неужели так сложно? :)
Нормальная система - это система которая обладает полной модульностью не ограничивая модули в функциональности (ну или ограничивая только в целях безопасности функционирования системы в целом).
Одним из примеров такой системы является ОС windows или unix. Если рассматривать эти системы, то несложно увидеть ядро, которое отвечает за загрузку приложений в память, распределение ресурсов и многое другое, а также модули (сами программы), которые позволяют расширить функционал системы до нужных пользователю. Там конечно структура сложнее... Есть модули, которые являются прослойками между ядром и программой... Примером такого модуля является драйвер, который позволяет выполнять некие действия, которые не предусматривает ядро системы (так как оно не нужно для работы программ в целом), но которое является промежуточным и напрямую не востребовано пользователем, а требуется именно в самом приложении для его правильной работы.
Ну это если по простому.

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

Ядро - для загрузки модулей. Модуль - конечный продукт востребованный пользователем (ну или другим продуктом, который востребован пользователем).
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662701
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-k2-ПрограмёрНЕТУ ОБЪЕКТОВ ))) Вы условия не воспринимаете. Мы уходим от ООП, потому у нас нету объектов... ...
за ради интереса - а с чем связан уход от ООП?

Ну в моём случае (в системе которую я поддерживаю), потому что она начинала писаться в 97 году :) . Насколько я знаю тогда ООП не очень то развито было вроде :). Но факт остаётся фактом... есть системы, где использование ООП не практикуется.

А уход от ООП в вопросе произошёл в момент когда представленный мной изначально код назвали говнокодом... вот с того момента и я стараюсь автору этого ответа пояснить случаи, когда именно этот код не будет говнокодом в отличие от любого другого (который я тоже уже предоставил)
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662706
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про ядро и модули - полный бред
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662730
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНормальная система - это система которая обладает полной модульностью не ограничивая модули в функциональности (ну или ограничивая только в целях безопасности функционирования системы в целом).
Одним из примеров такой системы является ОС windows или unix.
Да вы что, прям так и не ограничивает? :)
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662733
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилПро ядро и модули - полный бред

Вам виднее )) Бред из-за того что всё совсем иначе? (тогда как?)
или из-за того что не понятно?
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662737
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettавторНормальная система - это система которая обладает полной модульностью не ограничивая модули в функциональности (ну или ограничивая только в целях безопасности функционирования системы в целом).
Одним из примеров такой системы является ОС windows или unix.
Да вы что, прям так и не ограничивает? :)
?! В чём ограничивает? Кроме, как я говорил уже, ограничений по безопасности. То есть запрета прямого вывода в порты устройств и других подобных ограничений? И то первое ограничение снимается с драйверов устройств насколько я помню (лично под ОС никогда драйвера не писал просто).
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662770
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
встретились два одиночества.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662840
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowвстретились два одиночества.

Дааааааааа.....
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662851
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТАК

ПРОГРАММЕР
1)ты не понял намёк, ты написал про структурное - как антоним ооп, а тебя протролили..ведь структурное, это как бы антоним функциональному (это не там где функции и процедуры). ещо есть процедурное, которое ты имел ввиду скорей всего, но сказал структурное.

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

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

так что давай чтоб беседа не потеряла смысл, там где трошки перегнул соглашайся, а там где касманавты говорят про то что, создание истребителя 5 поколения это отстой, ведь его нельзя будет потом гибко в шестое поколение переделать, нельзя будет как звездолёт использовать, а главное что он не сможет быть в составе космической ударной группы на космическом авианосце который будет патрулировать отдалёную галактику... там стой на своём. ибо пускай косманавты покажут пример кода, который они помимо расхваления , реально гибко применяли под разные проекты, ибо круто обобщили(и имено расширяли меняя серьёзно общую логику, а не тупо использовали как есть - гавнокод последний тоже всегда можно использовать как есть и сказать что он вечный). а то вот что удивительно -
среднестатистический косманавт скажет что у него куча лет опыта в построении крутого кода с кучей патернов, и сейчас он пишет принципиально новый революционный клас для логирования скажем. и что больше всего удивляет. что основной аргумент таких космонавтов следующий

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

это естественный процесс вообщето. точно такиеже процесы но вдругой интерпритации
1)похудание
2)борьба с курением, алкоголизмом
3)разные системы личностного роста и повышения эффективности
4)среди менеджеров тоже есть тонна теорий про то как эефективно управлять...

и что интересно ни одна школа менеджмента не может похвастаться(вот великий менеджер стал виликим, ибо придерживался нашей школы)

или доктор по похуданию тем что у него худают все и всегда

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

споров куча, но никто не может показать убедительный результат превосходства.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662855
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

СОРИ пропустил концовку мысли

...
а то вот что удивительно -
среднестатистический косманавт скажет что у него куча лет опыта в построении крутого кода с кучей патернов, и сейчас он пишет принципиально новый революционный клас для логирования скажем. (тоесть за столько лет ему не надо было логирование?! конечно надо, и конечно писал, так почему не использовать крутое решение? и на базе него расширить, если дело в новом драйвере для логирования , или формат лога другой... или почему писать заново? чтож это за ооп такое что решаем задачу заново снуля.)
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662909
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ООП - не обязательно фабрики, паттерны, полиморфизм и т д

Достаточно инкапсуляции
Нет в PHP модуля в смысле Модулы или Дельфи - можно просто использовать в качестве модуля class со статическими методами (автозагрузчик заодно заработает )

Нет структур/записей - опять же класс подойдет ( самый простой без магических методов)
в отличие от словарей код более читаемый будет и автодополнение в среде программирования заработает
При желании параметры функций/методов можно сделать типизированными


Где тут ракетные науки?
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38662968
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилООП - не обязательно фабрики, паттерны, полиморфизм и т д

Достаточно инкапсуляции
Нет в PHP модуля в смысле Модулы или Дельфи - можно просто использовать в качестве модуля class со статическими методами (автозагрузчик заодно заработает )

Нет структур/записей - опять же класс подойдет ( самый простой без магических методов)
в отличие от словарей код более читаемый будет и автодополнение в среде программирования заработает
При желании параметры функций/методов можно сделать типизированными


Где тут ракетные науки?

а в моём понимании, судя по твоему посту ты не космонавт, а толковый айтишник, который будет использовать чтото в меру надобности.
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38663024
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453ТАК

ПРОГРАММЕР
1)ты не понял намёк, ты написал про структурное - как антоним ооп, а тебя протролили..ведь структурное, это как бы антоним функциональному (это не там где функции и процедуры). ещо есть процедурное, которое ты имел ввиду скорей всего, но сказал структурное.

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

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

так что давай чтоб беседа не потеряла смысл, там где трошки перегнул соглашайся, а там где касманавты говорят про то что, создание истребителя 5 поколения это отстой, ведь его нельзя будет потом гибко в шестое поколение переделать, нельзя будет как звездолёт использовать, а главное что он не сможет быть в составе космической ударной группы на космическом авианосце который будет патрулировать отдалёную галактику... там стой на своём. ибо пускай косманавты покажут пример кода, который они помимо расхваления , реально гибко применяли под разные проекты, ибо круто обобщили(и имено расширяли меняя серьёзно общую логику, а не тупо использовали как есть - гавнокод последний тоже всегда можно использовать как есть и сказать что он вечный). а то вот что удивительно -
среднестатистический косманавт скажет что у него куча лет опыта в построении крутого кода с кучей патернов, и сейчас он пишет принципиально новый революционный клас для логирования скажем. и что больше всего удивляет. что основной аргумент таких космонавтов следующий

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

это естественный процесс вообщето. точно такиеже процесы но вдругой интерпритации
1)похудание
2)борьба с курением, алкоголизмом
3)разные системы личностного роста и повышения эффективности
4)среди менеджеров тоже есть тонна теорий про то как эефективно управлять...

и что интересно ни одна школа менеджмента не может похвастаться(вот великий менеджер стал виликим, ибо придерживался нашей школы)

или доктор по похуданию тем что у него худают все и всегда

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

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

1. да )) тута я ошибся... термин "структурное" немного шире чем "процедурное", потому спорить не буду)) Недочитал, видимо от волнительной беседы
2. А вот тут немного не соглашусь. Тут вся фишка в том, что в отдельности по каждому вопросу при споре, который можно свести к вопросу на "да или нет" может быть прав кто-то один. В данном случае спор звучит так "можно сделать так, и это будет удобно" - "так делать нельзя, это говнокод". Вот и усё.

3. С массивами-конфигами сталкиваюсь только по работе в Yii, но там конфиги сквозь функции не прокидываются, насколько я помню. :) Код чаще пишу в стиле ООП, потому у меня конфиги доходят до конструкторов классов, после чего, разумеется, переплывают уже в переменные объектов.

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

4. Насчёт поддержки кода, не всегда. В прошлой компании работал, в момент устройства на работу там код был очень даже ничего (спустя пол года разработки системы)... А спустя ещё год систему начали усложнять и всё начало превращаться в большую, хорошо перемешанную кашу :)

Так что в принципе код одного программиста может быть понятен другому, и иногда так бывает... Просто у нас к сожалению больше как в народе говорится "быдлокодеров" чем тех, кто всё по фэншую пишет. :) Потому так и получается, что из 10 разработчиков код читабельный и удобный только у 2-3... А читабельный, удобный и правильно продуманный в плане структуры, вообще у одного :)
...
Рейтинг: 0 / 0
PHP: Завершить выполнение кода из include-файла
    #38663099
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНет в PHP модуля в смысле Модулы или Дельфи
тред одиноких нечетателей документации.
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Завершить выполнение кода из include-файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]