Комментарии 24
Совершенно неясно, в чём состояла проблема с упомянутым одно- и двух-табличным хранением объектов, и что это за структура, которой свет не видывал. Это же самое интересное, расскажите нам!
А без такого пояснения ORM-на-коленке действительно выглядит вредным велосипедом.
Коллега, жму руку! Если ты лично получаешь удовольствие от того, что делаешь — то это уже повод для написания "велосипеда". А если этот "велосипед" улучшил работающий проект, а не сломал его — это ещё и повод для гордости. Что касается критики (не)употребления существующих решений, то автоводитель никогда до конца не поймёт мотивацию автоконструктора.
Тут ещё непонятна мотивация написания велосипеда, якобы существующие не подошли, но, вероятно, автор просто не умеет их готовить или не захотел разбираться.
Я реализовал весь проект в течении примерно недели, параллельно занимаясь поставленными задачами по внедрению новых features
Теперь придётся поддерживать ещё этот продукт, вероятно за очень неполную неделю не было сделано полноценной ORM
Меня таким не испугаешь, я разрабатывал под Magento. Там столько разных подходов намешано, что чей-то собственный "велосипед", написанный за неполную неделю — меньшее из зол:
Просто прокачайте свой дзен.
И готовы ли вы тратить ресурсы работодателя на написание и, немаловажно, поддержку велосипеда? И согласен ли работодатель на это?
Выбрать подходящий инструмент всегда очень важно
$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-летней давности. Это как поставить двигатель внутреннего сгорания для авиамоделек на ту мою машинку из детского конструктора. Можно, но зачем?
он даже ссылки на свой код не дал
проект коммерческий, кода я не могу выложить, я даже немного постеснялся углубляться в код и его листинги по этой же причине, но теперь из комментариев понимаю, что стоило все же подробнее описать что было и что я сделал.
Коллега поделился радостью от творчества, а мы его в минуса, да ещё и комментами по мордасам.
Спасибо!
Да, допустимо. Более того, писали весь код в одну строчку. Когда-то нечто подобное было популярным и модным.
Не не так дело не пойдет, по вашей же логике можно было вообще ничего не улучшать и не делать свой 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 Как это поможет мне не ясно вообще. Но при этом вы жалуетесь что вас минусуют якобы просто так, нет не просто так, если вы решили повыпендриваться своими костылями то ждите что вас обольют грязью потому что костыль кривой.
Этим я отвечал вам по поводу вашего недовольства минусами а не потому что я не доволен тем что прочитал эту статью. Зачем вы придумываете?
Кого там от чего прет его личное дело, мы же не сборище наркоманов тут а кружок программистов которые делятся опытом. Или я ошибаюсь поправьте меня!
Ошибаетесь. Поправляю. Это публичный ресурс, куда приходят каждый за всяким, что не противоречит правилам этого ресурса (вот они — для авторов и для посетителей). И поделиться опытом, и похвастаться, и ногами попинать. Кому чего не хватает.
Где самое интересное, что за структура такая, почему именно не подошли популярные решения, как была решена проблема, куски кода этого решения, фото первых набросков?
Как я решил написать ORM на php с нуля на работающем сайте, и что из этого вышло