LINUX.ORG.RU

История изменений

Исправление AndreyKl, (текущая версия) :

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

Ну, по моему ты позволяешь себе игнорировать аргументы.

1) Лаконичность. В последнем моём варианте строк 13 (вместе с определением и вызовом, если я верно подсчитал), в твоём - 12. В чём мазохизм? В передаче функций как параметров? Ну пхп есть пхп, что тут сделаешь. Вряд ли это можно считать серьёзным аргументом против ОРМ. Форматировать я буду по-другому, но это дело вкуса во многом.

При этом если нужно сделать примерно тот же запрос в двух разных местах, у тебя будет 24 строки кода, а у меня 16, для трёх (что тоже случается) ты пишешь 36, я 19.

2) Простота поддержки. Вот опять же, ты забыл стрип тегс. Это правда лажа, если только ты делаешь не для одного единственного человека систему (или ты стрипаешь при выводе). В твоём случае тебе нужно будет пройти по всем местам где ты делаешь запросы, а их может быть заметно больше двух. В моём - лишь одно место, файл. При этом все эти файлы лежат в одном месте, т.е. если я вспомню про стрип_тегс позднее, то мне будет сильно проще чем тебе. При этом меньше тестировать и отлаживать — когда ты пишешь в стиле php3, то ты там делаешь тучу всего где можно налажать, для примера: не так сопоставить параметры (на место contract_owner_code поставить description и наоборот, ошибиться в написании зарпоса). Таких ошибок невозможно сделать с использованием ORM.

Если массив не указан - будет выполняться более лёгкая \pg_query со строкой вида «insert into a (id) values (» . $id . ")"; Потому что я точно знаю, что это $id я уже точно обернул в (int) или intval() и никаких дополнительных преобразований Postgres делать не должен.

В целом, аргумент про «я уже обернул и теперь вставил в строку руками» мне кажется наивным по сравнению с $obj->value = $a;. Как бы просто разный уровень автоматизации (типа если бы ассемблерщик говорил сишнику «а я всегда могу поместить в ax». Ну можешь, но толку?) Поэтому я его не рассматриваю, кроме как как сознательную оптимизацию. Но при сознательной оптимизации ты можешь всегда написать такой запрос, какой нужно, без орм. Поэтому аргумент не имеет смысла на мой взгляд.

Примерно то же относится к новым фичам БД, вариантов несколько:
-- просто не трогать, если всё работает
-- написать запрос руками, если очень важно
-- добавить функциональность в ОРМ, использвать ОРМ
-- подождать пока добавят функциональность в ОРМ и использовать ОРМ

Т.е. этот вопрос в целом, тоже смысла не имеет: варианты ровно те же, что и с ОРМ + можно подождать пока сделают другие.

ОРМ он для производительности труда, и при написании и при поддержке. Обычно это не 100% функционала БД, обычно что то вроде «большинство часто используемых». Потому как гораздо проще написать

  $res = ORM::factory('RentDate', @$_POST['rent_id'])
  ->values($_POST)
  ->save()
  ->as_array();
//  print_r($res);
//  ['rend_id' => 25, 'contract_number' => ...]

чем тот код который у тебя.

что касается

Это ORM делает? Или считается, что PHP-программисту об этом думать не надо?

ОРМ, конечно способен выбрать функцию в зависимости от параметров. И наверняка так делает. Но это кмк не критично, или плюс для ОРМ, но не для ручного запроса, поскольку в случае не-ОРМ такой код это просто преждевременные оптимизации, что однозначно плохо.

3) ну и в примере, что надо менять если скажем добавим в таблицу новое свойство?

Код вставки/обновления остаётся такой же

ORM::factory('RentDate', @$_POST['rent_id'])
  ->values($_POST)
  ->save();


Единственное что нужно поменять в ОРМ это функцию filters чтобы добавить правило обработки значения от пользователя. В отличие от кода в стиле php3.

И даже в варианте
$o = ORM::factory('RentDate', @$_POST['rent_id'])
$o->values($_POST, [...])

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

Остаётся ещё вывод и посылка данных на сервер. Но работы всё равно становится заметно меньше (процентов на 30% наверное), поэтому ОРМ однозначно выигрывает у стиля php3.

А так — пожалуйста, но зря ты упираешься, по моему. Я выбираю себе фреймворк и учу его, что позволяет писать код заметно быстрее и лушче. Несмотря на то что приходится потратить некоторое время на изучение фреймворка. Боюсь что с подходом php3 найти работу будет заметно сложнее. Хорошую работу, конечно, а не за 25 тысяч в месяц. И, объективно, это так и должно быть, потому что производительность труда программиста с использованием подобных (устаревших) технологий будет ниже, как ни крути.

Исправление AndreyKl, :

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

Ну, по моему ты позволяешь себе игнорировать аргументы.

1) Лаконичность. В последнем моём варианте строк 13 (вместе с определением и вызовом, если я верно подсчитал), в твоём - 12. В чём мазохизм? В передаче функций как параметров? Ну пхп есть пхп, что тут сделаешь. Вряд ли это можно считать серьёзным аргументом против ОРМ. Форматировать я буду по-другому, но это дело вкуса во многом.

При этом если нужно сделать примерно тот же запрос в двух разных местах, у тебя будет 24 строки кода, а у меня 16, для трёх (что тоже случается) ты пишешь 36, я 19.

2) Простота поддержки. Вот опять же, ты забыл стрип тегс. Это правда лажа, если только ты делаешь не для одного единственного человека систему (или ты стрипаешь при выводе). В твоём случае тебе нужно будет пройти по всем местам где ты делаешь запросы, а их может быть заметно больше двух. В моём - лишь одно место, файл. При этом все эти файлы лежат в одном месте, т.е. если я вспомню про стрип_тегс позднее, то мне будет сильно проще чем тебе. При этом меньше тестировать и отлаживать — когда ты пишешь в стиле php3, то ты там делаешь тучу всего где можно налажать, для примера: не так сопоставить параметры (на место contract_owner_code поставить description и наоборот, ошибиться в написании зарпоса). Таких ошибок невозможно сделать с использованием ORM.

Если массив не указан - будет выполняться более лёгкая \pg_query со строкой вида «insert into a (id) values (» . $id . ")"; Потому что я точно знаю, что это $id я уже точно обернул в (int) или intval() и никаких дополнительных преобразований Postgres делать не должен.

В целом, аргумент про «я уже обернул и теперь вставил в строку руками» мне кажется наивным по сравнению с $obj->value = $a;. Как бы просто разный уровень автоматизации (типа если бы ассемблерщик говорил сишнику «а я всегда могу поместить в ax». Ну можешь, но толку?) Поэтому я его не рассматриваю, кроме как как сознательную оптимизацию. Но при сознательной оптимизации ты можешь всегда написать такой запрос, какой нужно, без орм. Поэтому аргумент не имеет смысла на мой взгляд.

Примерно то же относится к новым фичам БД, вариантов несколько:
-- просто не трогать, если всё работает
-- написать запрос руками, если очень важно
-- добавить функциональность в ОРМ, использвать ОРМ
-- подождать пока добавят функциональность в ОРМ и использовать ОРМ

Т.е. этот вопрос в целом, тоже смысла не имеет: варианты ровно те же, что и с ОРМ + можно подождать пока сделают другие.

ОРМ он для производительности труда, и при написании и при поддержке. Обычно это не 100% функционала БД, обычно что то вроде «большинство часто используемых». Потому как гораздо проще написать

  $res = ORM::factory('RentDate', @$_POST['rent_id'])
  ->values($_POST)
  ->save()
  ->as_array();
//  print_r($res);
//  ['rend_id' => 25, 'contract_number' => ...]

чем тот код который у тебя.

что касается

Это ORM делает? Или считается, что PHP-программисту об этом думать не надо?

ОРМ, конечно способен выбрать функцию в зависимости от параметров. И наверняка так делает. Но это кмк не критично, или плюс для ОРМ, но не для ручного запроса, поскольку в случае не-ОРМ такой код это просто преждевременные оптимизации, что однозначно плохо.

3) ну и в примере, что надо менять если скажем добавим в таблицу новое свойство?

Код вставки/обновления остаётся такой же

ORM::factory('RentDate', @$_POST['rent_id'])
  ->values($_POST)
  ->save();


Единственное что нужно поменять в ОРМ это функцию filters чтобы добавить правило обработки значения от пользователя. В отличие от кода в стиле php3.

И даже в варианте
$o = ORM::factory('RentDate', @$_POST['rent_id'])
$o->values($_POST, [...])

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

Остаётся ещё вывод и посылка данных на сервер. Но работы всё равно становится заметно меньше (процентов на 30% наверное), поэтому ОРМ однозначно выигрывает у стиля php3.

А так — пожалуйста, но зря ты упираешься, по моему. Я выбираю себе фреймворк и учу его, что позволяет писать код заметно быстрее и лушче. Несмотря на то что приходится потратить некоторое время на изучение фреймворка. Боюсь что с подходом php3 найти работу будет заметно сложнее. Хорошую работу, конечно, а не за 40 тысяч в месяц. И, объективно, это так и должно быть, потому что производительность труда программиста с использованием подобных (устаревших) технологий будет ниже, как ни крути.

Исходная версия AndreyKl, :

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

Ну, по моему ты позволяешь себе игнорировать аргументы.

1) Лаконичность. В последнем моём варианте строк 13 (вместе с определением и вызовом, если я верно подсчитал), в твоём - 12. В чём мазохизм? В передаче функций как параметров? Ну пхп есть пхп, что тут сделаешь. Вряд ли это можно считать серьёзным аргументом против ОРМ. Форматировать я буду по-другому, но это дело вкуса во многом.

При этом если нужно сделать примерно тот же запрос в двух разных местах, у тебя будет 24 строки кода, а у меня 16, для трёх (что тоже случается) ты пишешь 36, я 19.

2) Простота поддержки. Вот опять же, ты забыл стрип тегс. Это правда лажа, если только ты делаешь не для одного единственного человека систему (или ты стрипаешь при выводе). В твоём случае тебе нужно будет пройти по всем местам где ты делаешь запросы, а их может быть заметно больше двух. В моём - лишь одно место, файл. При этом все эти файлы лежат в одном месте, т.е. если я вспомню про стрип_тегс позднее, то мне будет сильно проще чем тебе. При этом меньше тестировать и отлаживать — когда ты пишешь в стиле php3, то ты там делаешь тучу всего где можно налажать, для примера: не так сопоставить параметры (на место contract_owner_code поставить description и наоборот, ошибиться в написании зарпоса). Таких ошибок невозможно сделать с использованием ORM.

Если массив не указан - будет выполняться более лёгкая \pg_query со строкой вида «insert into a (id) values (» . $id . ")"; Потому что я точно знаю, что это $id я уже точно обернул в (int) или intval() и никаких дополнительных преобразований Postgres делать не должен.

В целом, аргумент про «я уже обернул и теперь вставил в строку руками» мне кажется наивным по сравнению с $obj->value = $a;. Как бы просто разный уровень автоматизации (типа если бы ассемблерщик говорил сишнику «а я всегда могу поместить в ax». Ну можешь, но толку? Поэтому я его не рассматриваю, кроме как как сознательную оптимизацию. Но при сознательной оптимизации ты можешь всегда написать такой запрос, какой нужно, без орм. Поэтому аргумент не имеет смысла на мой взгляд.

Примерно то же относится к новым фичам БД, вариантов несколько:
-- просто не трогать, если всё работает
-- написать запрос руками, если очень важно
-- добавить функциональность в ОРМ, использвать ОРМ
-- подождать пока добавят функциональность в ОРМ и использовать ОРМ

Т.е. этот вопрос в целом, тоже смысла не имеет: варианты ровно те же, что и с ОРМ + можно подождать пока сделают другие.

ОРМ он для производительности труда, и при написании и при поддержке. Обычно это не 100% функционала БД, обычно что то вроде «большинство часто используемых». Потому как гораздо проще написать

  $res = ORM::factory('RentDate', @$_POST['rent_id'])
  ->values($_POST)
  ->save()
  ->as_array();
//  print_r($res);
//  ['rend_id' => 25, 'contract_number' => ...]

чем тот код который у тебя.

что касается

Это ORM делает? Или считается, что PHP-программисту об этом думать не надо?

ОРМ, конечно способен выбрать функцию в зависимости от параметров. И наверняка так делает. Но это кмк не критично, или плюс для ОРМ, но не для ручного запроса, поскольку в случае не-ОРМ такой код это просто преждевременные оптимизации, что однозначно плохо.

3) ну и в примере, что надо менять если скажем добавим в таблицу новое свойство?

Код вставки/обновления остаётся такой же

ORM::factory('RentDate', @$_POST['rent_id'])
  ->values($_POST)
  ->save();


Единственное что нужно поменять в ОРМ это функцию filters чтобы добавить правило обработки значения от пользователя. В отличие от кода в стиле php3.

И даже в варианте
$o = ORM::factory('RentDate', @$_POST['rent_id'])
$o->values($_POST, [...])

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

Остаётся ещё вывод и посылка данных на сервер. Но работы всё равно становится заметно меньше (процентов на 30% наверное), поэтому ОРМ однозначно выигрывает у стиля php3.

А так — пожалуйста, но зря ты упираешься, по моему. Я выбираю себе фреймворк и учу его, что позволяет писать код заметно быстрее и лушче. Несмотря на то что приходится потратить некоторое время на изучение фреймворка. Боюсь что с подходом php3 найти работу будет заметно сложнее. Хорошую работу, конечно, а не за 40 тысяч в месяц. И, объективно, это так и должно быть, потому что производительность труда программиста с использованием подобных (устаревших) технологий будет ниже, как ни крути.