Pull to refresh

Comments 24

Совершенно неясно, в чём состояла проблема с упомянутым одно- и двух-табличным хранением объектов, и что это за структура, которой свет не видывал. Это же самое интересное, расскажите нам!


А без такого пояснения ORM-на-коленке действительно выглядит вредным велосипедом.

UFO just landed and posted this here

И даже трехтабличные

Если проект не на ларавеле или симфони, то я бы лучше рекомендовал Propel2

Коллега, жму руку! Если ты лично получаешь удовольствие от того, что делаешь — то это уже повод для написания "велосипеда". А если этот "велосипед" улучшил работающий проект, а не сломал его — это ещё и повод для гордости. Что касается критики (не)употребления существующих решений, то автоводитель никогда до конца не поймёт мотивацию автоконструктора.

Желаю вам получить для поддержки проект, в котором автор 'улучшал' работающий проект своими велосипедами, а не использовал существующие решения.

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

Я реализовал весь проект в течении примерно недели, параллельно занимаясь поставленными задачами по внедрению новых features

Теперь придётся поддерживать ещё этот продукт, вероятно за очень неполную неделю не было сделано полноценной ORM
Согласен с вами полностью по поводу поддержки таких проектов

Меня таким не испугаешь, я разрабатывал под Magento. Там столько разных подходов намешано, что чей-то собственный "велосипед", написанный за неполную неделю — меньшее из зол:


image


Просто прокачайте свой дзен.

Вы готовы заставлять своих коллег и тех, кто будет поддерживать проект после вас, пользоваться вашим велосипедом? Достаточно ли ваш велосипед стабилен, расширяем и протестирован?
И готовы ли вы тратить ресурсы работодателя на написание и, немаловажно, поддержку велосипеда? И согласен ли работодатель на это?

Выбрать подходящий инструмент всегда очень важно
По вашему конструкторы авто все идеи для своих авто каждый раз придумывают с 0 и не берут уже имеющиеся? Бред полный, множество автозапчастей у разных авто производителей от одного и того же вендора. Одно колесо чего стоит которое во всех авто по одинаковому принципу сделано, в любом случае у каждой отрасли свои нюансы, а писать свои ормки сами понимаете… Тесты, документация и т.д, одному за неделю? Вряд ли) Вы конечно молодец что не сломали свой проект, просто вам говорят почему не laravel orm или еще что то потому что догнать их по функционалу вам в одиночку будет просто не реально, так что это просто велосипед) Я тоже в 2к10 делал подобное, только с появлением реально хороших решений как doctrine или laravel orm (а это на самом деле не все что есть, propel zend etc. даже у kohana был свой orm) надобность в своей просто отпала. Я еще понимаю если бы вы решили сделать реально что то новое для PHP в плане ORM, тогда к вам и еще и другие разрабы могли бы подтянуться а так вы просто решили поиграться с написанием некоего подобия ORM не более. На сколько ваша ORM платформо зависимая? И вообще какой функционал вы получили?

$element = (new Model())->getOne($id);


public function getOne($id) {
    return $this->query("SELECT * FROM ".$this->table." WHERE id = :id", ['id' => $id])[0];
}

private function query(string $sql, array $params): array
{
  // я думаю тут все понятно?
}


И тут уже начинается, а если надо выбирать только определенные столбцы, а если Primary key не ID, Query builder etc.

Я как-то, будучи школьником, из детского металлического конструктора сделал машинку, поставил на неё электромоторчик с батареей, а потом с другом тестировали это сооружение — на полу, по ковру, по снегу, в горку, в прыжке через препятствие. Платформа, две оси, четыре колеса, резинка для передачи момента вращения с двигателя на колёса. Было занятно.


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


Передо мной встала проблема: использовать популярные open-source ORM так, как я хочу не получится, ну, по крайней мере это будет то еще приключение.

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


Много вы видели заказов, когда в legacy-проекты просили встроить современные решения? За что заказчики платят деньги, то и получают. Я, например, не видел ни одного заказчика, который бы платил деньги за добавление Doctrine в работающий проект 10-летней давности. Это как поставить двигатель внутреннего сгорания для авиамоделек на ту мою машинку из детского конструктора. Можно, но зачем?

он даже ссылки на свой код не дал

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

Коллега поделился радостью от творчества, а мы его в минуса, да ещё и комментами по мордасам.

Спасибо!
UFO just landed and posted this here
По поводу интеграции Doctrine, а почему вообще doctrine? Почему не Propel? И вообще в какой вселенной типичный заказчик разбирается в каких то там библиотеках для работы с БД на PHP? Смешно просто. Это уже выбор исполнителя. Вот ваши предки решили зачем мне изучать чью то библиотеку если я могу сделать свой костыль и работает. Окей, теперь вы говорите зачем мне брать и изучать хорошую библиотеку если я могу взять и сделать ЕЩЕ ОДИН СВОЙ КОСТЫЛЬ. А что дальше? После вас кто то еще будет новый костыль делать? Ну удачи вам.

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

и никто не был готов выделять ресурсы программистов на задачи «переписать все с нуля с нормальной структурой БД»


Т.е на сколько я понимаю нужды в этом в принципе не было кроме того что автор сам решил улучшить то что бы самому было проще с этим работать. Так вот, еще раз вам говорю. Пускай хоть 100 тысяч лет проекту, если вы решили что то улучшить то нету разницы в том что бы брать какое то готовое решение или писать свой ORM. Результат все равно будет одинаковый верно? Будет улучшен существующий код и залог на будущее. doctrine/eloquent/propel/yii/свой ORM да какая разница? Ее нет, а вот где в статье описание того почему одно из этих решений было отвергнуто в пользу своего? Я так и не понял чем они вам не подошли. В конце концов вам не нужно брать полностью весь пакет, например Eloqnet под капотом использует Illuminate/database который отвечает за работу с запросами к БД, имеет Query Builder и т.д. Его интегрировать вообще изи, не нужно даже брать сам Eloquent. Но вы все равно упорно пишите свой велисипед потому что???

Автор почему решил написать свой «ORM»? Он просто явно не работал с другими вендорами в принципе. ORM, ActiveRecord, DataMapper разницу вы знаете? У вас даже не то что бы ORM полноценный, какое то подобие ActiveRecord и все похоже.

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

А кто вас заставляет читать? По тексту публикации же видно, что человека прёт от того, что он "написал ORM". Автор сразу же честно предупредил, что будет "про велосипед". Кода почти нет, схем нет, диаграмм нет. Есть много букв и мало информации. Вы обманулись? Ну так это ваша персональная беда — вы не способны технический текст отличить от художественной литературы. Потратили время на внимательное чтение эссе "Как я провёл лето", а теперь тратите время на рассуждения в комментах что, с вами нехорошо обошлись. Я, например, по-диагонали текст пробежал и улыбнулся в конце. Мне норм.

Уважаемый!

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

Еще раз спрашиваю зачем этот материал в хабе по PHP на хабре? Зачем? С какой целью он сюда опубликован вы можете ответить? У нас тут что кружок литературы??? Пишите в соответствующий хаб тогда какие проблемы если это литературный текст? Кого там от чего прет его личное дело, мы же не сборище наркоманов тут а кружок программистов которые делятся опытом. Или я ошибаюсь поправьте меня!

Потратили время на внимательное чтение эссе «Как я провёл лето», а теперь тратите время на рассуждения в комментах что, с вами нехорошо обошлись.

Да вы вообще в своем уме? Вы хотя бы прочитали мои комментарии? Я в них задаю конкретные вопросы, а вы мне в ответ вы сами виноваты что вы получили не то что хотели!!! У вас как с логикой окей? Я трачу свое время тут не просто так, это мой выбор, я нигде не сказал что АВТОР виноват в том что я прочитал его статью и получил не то что хотел или чем то не удовлетворен!!! Я четко спросил про то почему не подошли другие ORM и т.д. Это конструктивные вопросы на которые я хотел получить ответы, мне это интересно. А вы видимо с автором накурились и в своем мире витаете, еще раз пожалуйста перечитайте мои комментарии и не пишите бред!

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

Этим я отвечал вам по поводу вашего недовольства минусами а не потому что я не доволен тем что прочитал эту статью. Зачем вы придумываете?
Кого там от чего прет его личное дело, мы же не сборище наркоманов тут а кружок программистов которые делятся опытом. Или я ошибаюсь поправьте меня!

Ошибаетесь. Поправляю. Это публичный ресурс, куда приходят каждый за всяким, что не противоречит правилам этого ресурса (вот они — для авторов и для посетителей). И поделиться опытом, и похвастаться, и ногами попинать. Кому чего не хватает.

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

Ваша настойчивость мне импонирует, но предвижу кармослив в перспективе.

Я думаю, вы можете дописать в конце статьи UPD со ссылкой на комментарии
Sign up to leave a comment.

Articles