В эпоху богатых по функционалу Yii2, Laravel, CI и прочих я вдруг решил написать свой собственный фреймворк (микрофреймворк) и не забавы ради, а для разработки конкретного проекта (уже закрыт). Это не реклама моего фреймворка, а небольшой очерк, так, навеяло вчера.
Я работал в одной компании, продающей автозапчасти в розницу и возникла идея создать сервис вроде zapradar.ru. До этого я был знаком лишь с одним фреймворком — Codeigniter 2. Проект решил делать на PHP 7. Большого опыта в программировании не было. Я начал изучать документацию Yii, Codeigniter 3. Оба фреймворка устанавливаются через консоль с кучей дополнительных модулей, зависимостей и т.п. Yii2 мне показался и вовсе неудобным (может, в силу отсутствия опыта). В общем я решил написать свой микрофреймворк и создавать проект на нем. Ссылку на него я дам в конце статьи.
Позже с помощью этого инструмента я создал еще несколько сайтов с нестандартным функционалом.
Мне предстоит реализация еще одного сложного проекта (своими силами или в сотрудничестве с другим более опытным разработчиком). И я решил, что мой фреймворк недостаточен. Поэтому начал изучать документацию и возможности других. Первым делом, я написал краткое ТЗ для своего проекта. Попытался сделать некоторые вещи на Yii2, Laravel. Первый мне не понравился своей избыточностью и множеством зависимостей, второй понравился. И всё же пришел к выводу, что, скорее всего, буду строить на своём фреймворке (но выбираю между ним и Laravel).
Я объясню, зачем это оказалось нужным мне. Идея использовать сторонний инструмент хороша тем, что уже есть множество бибилиотек, за которыми стоят целые команды. Выбирая Laravel, Yii2, CI и т.п. ты по сути нанял целую команду, которая уже многое сделала для твоего проекта. Но небольшой инструмент, созданный своими руками, позволит внедрить свою архитектуру и стандарты. Вопрос лишь целесообразности. Кроме того в указанных фреймворках не так много бибилиотек, которые в своём проекте я буду использовать, как есть. Почти всё придется писать с нуля. И именно последний момент склоняет меня к уже написанному ещё одному никому неизвестному PHP фреймворку.
Зачем я написал эту статью? Habr.com — отличный источник знаний, идей, площадка для обмена опытом. Возможно этот материал вызовет дискуссию и там я увижу что-то новое, что может полностью поменять мои взгляды. Например, к прошлой моей статье был дан очень ценный для меня комментарий.
Вот ссылка на GITHUB. Кстати, кому интересно, делитесь библиотеками. Вдруг это будет кому-то полезно (кроме меня).
Комментарии (79)
yu-hritsaiy
01.05.2019 09:37Нужен микрофреймворк — Symfony 4, Slim. А ваш код написал не в самых лучших практиках.
oldcastor
01.05.2019 09:56Ваш код не смотрел, но справедливости ради стоит отметить, что тот же ларавел позволяет сделать с собой ± что угодно. Перенастрайте конфиги под свои нужды, переопределяйте реализации. В случае минимальных нужд, как выше отметили, берите люмен и надстраивайте что хотите.
А разбираться с вашим велосипедом, который может оказаться далеко не тортом, для поддержки или, не дай всевышний, расширения проекта… Ну я попадал на такое. И тратил кучу времени на переписывание с нуля.
shushu
01.05.2019 13:25Знаете, я как то начал изучать Ларавел (года 4 назад) и… забросил. Я решил что у меня нету столько свободного времени что бы тратить его на Ларавел.
Слишком много магии в этом фреймворке о которой просто нужно знать.
Ну и как по мне: Yii, Symfony напорядок удобней в использовании.
sonkei
01.05.2019 15:47Если нет времени возможно стоило взглянуть в сторону готовых CMS?
maxsharun Автор
01.05.2019 15:47Как раз, CMS и не подходят. Все будет совсем нестандартно.
Samouvazhektra
01.05.2019 20:28+1Я бы вам таки очень посоветовала обсудить необходимое с более опытным разработчиком/ами. Есть очень больше подозрения что нестандартность решения вызвана слабым знакомством со стандартными
maxsharun Автор
01.05.2019 20:52Я точно знаю, что CMS мне не подходит — ни одна. Потому что я точно знаю, чего я хочу. Но спасибо за рекомендацию.
Jouretz
01.05.2019 21:28+1CMS — система управления контентом. У вас либо в проекте в принципе контента не планируется, либо вы не знакомы со всеми возможностями всех существующих CMS. В таком ключе возникает вопрос почему вы уверены что вам PHP-то подходит?
maxsharun Автор
01.05.2019 21:481) Я знаком со многими CMS (WP, Joomla, Bitrix, OpenCart). Контента не предполагается в привычном виде, а тот, что будет формируется несколько иным способом, чем предлагается в классическом виде.
2) Да, подходит именно PHP по нескольким причинам: скорость разработки; часть функционала уже даже готова (на PHP). Остальные варианты (Python) тоже здорово, но это будет дольше (потому что мне нужно собрать денег на спеца и оторвать его от текущей своей работы), дороже и не факт, что проект выстрелит (простая статистика — часть проектов не работает).
maxsharun Автор
01.05.2019 10:00Спасибо за комментарии и дизлайки. Это развивает. Отдельное спасибо за конструктивную критику и подсказки со стороны yu-hritsaiy и oldcastor. И я еще раз объясню (дизлайкающим), что ищу основу для своего решения и эта статья спровоцировать соответствующую дискуссию, чтобы узнать больше (а не реклама фреймворка, хотя я к нему уже и привык).
a-tk
01.05.2019 10:03Лет 15 назад написание собственных фреймворков на PHP было в порядке вещей. Но это было лет 15 назад…
maxsharun Автор
01.05.2019 10:09Мне предстоит многое написать и за короткий срок. Вы, скорее всего, правы. А если уж я решу развивать свой продукт, то, наверное, выбрав конструктивный подход, собрав лучшее. Но сейчас, честно, задача создать функциональный проект для решения конкретной моей бизнес-задачи. Вообще, благодарен хаброжителям за то, что оставляют комментарии.
pOmelchenko
01.05.2019 11:01Судя по этому комментарию, вы сейчас выбрали «деструктивный подход», а зачем? Что вас останавливает собирать лучшее уже сейчас?
Я за свои не долгие 2-3 года повидал не мало, разного качества, кода и, с сожалением вам сообщаю, вы пишите очень плохой велосипед, даже не с квадратными, а с треугольными колесами.
Во-первых,Большого опыта в программировании не было.
иВ общем я решил написать свой микрофреймворк и создавать проект на нем.
уже из коробки дают критическую проблему для вашего руководства, которое поручило разработку.
Во-вторых, отсутствие стандартов которые уже приняты в сообществе (Composer и PSR о которых уже упомянули ранее).
В-третьих, отсутствует покрытие тестами хоть чего-либо.
Дальше просто перечислю…
— отсутствуют нэймспэйсы
— автолоадер вы не поняли
— mysqli вместо pdo
— Database полон sql инъекций
— mvc который не mvc
В общем… Там очень много мест которые надо переписывать с нуля, даже если задаваться целью написания собственного фрэймворка. Одно я точно могу вам посоветовать уже сейчас, найдите время и деньги пройти курсы php разработки.
Поднимите уровень базовых знаний, а потом научитесь применять готовые библиотеки и собирать из них свои решения.maxsharun Автор
01.05.2019 12:08Очень ценный, вправляющий мозги и подробный комментарий. И не только Вы, но и всё сообщество меня переубедило. Вообще, всё началось с того, что мне прислали тестовое задание на Yii, я не знаком был с фреймворком, но справился. Не могу сказать, что Yii мне понравился. Почитал документацию Laravel, он мне показался интереснее. К тому же относительно рядом есть опытный разработчик. Не зря я потратил время на статью и подвергся критике. Спасибо.
wertex15
01.05.2019 21:30+2Привет! Я тоже новичок как и вы :) Долгое время выбирал между YII и Laravel. Смотрел так же в сторону Symfony, но после неоднократных комментариев о том что порог вхождения в последний самый высокий перестал его рассматривать, хоть и сейчас часто слежу за его изменениями.
Для своего первого проекта выбрал таки YII. Написал работающее приложение. YII показался мне удобным по причине легкого входа для новичков. Тем что там из коробки есть генератор шаблонов — gii, много интерфейсных элементов (списки, таблиц и прочее). Новый проект пишу на laravel. Он мне кажется чуть сложнее, но вспоминая как это реализовывалось в YII становится проще писать.
Мой проект тоже по ТЗ и CMS мне ну никак не подойдет, но писать свой фреймворк я не хотел и не хочу, ибо зачем… есть уже годами «вылизанное» средство разработки. Он позволяет быстро и качественно разрабатывать… есть много расширений/дополнений/практик.
ЕдинственнLaravelочу сделать в своих проектах дак это DDD, которого нет в Laravel и в YII. Но мне пока до этого далеко.
Если примите мой совет он будет такой:
— курсы по PHP действительно не будут лишними (пусть даже бесплатные)
— возьмите Laravel :)
sanchezzzhak
02.05.2019 10:23+1Каждый уважающий себя пхп программист должен написать пхп фейерверк с нуля, после ему открывается третий глаз, который открывает истину: все уже придумано до нас.
psFitz
01.05.2019 10:35Не завидую я вашим клиентам, заплатят вам, а потом еще раз тем кто будет переписывать на что-то нормальное
maxsharun Автор
01.05.2019 10:44Ну, я бы не сказал, что этот фреймворк совсем уж ненормальный. И с ним работало пара сторонних разработчиков для внутренних проектов (один из них прекрасно знает Laravel и ряд других). Я спросил их честное мнение (они не знакомы друг с другом). Отметили простоту и незамысловатость, а также удобство для использования на мелких проектах, где есть какой-то нестандартный функционал. Но я повторюсь, что это не реклама моего фреймворка. Я поделился своим мнением и читаю мнения более продвинутых. И эта статья со всеми комментариями полезна тем, кто в такой же ситуации, что и я.
psFitz
01.05.2019 10:52+1Дело не в нормальности, а в стандартах, которых у вас нет. да и простой он?
Простой пока нужно сделать пару страниц и работают люди которые разрабатывают на нем, как посмотреть структуру таблицы в бд без открытия phpmyadmin? где хотя-бы слой сервис? где композер? внедрение зависимостей? что будет если понадобится добавить кеш?
А вьюхи наследуются? А если надо будет добавить еще один css или поменять хедер? везде по коду будете бегать и менять? А если поменяется структура таблички? Будете по коду искать использование этой таблицы и менять код везде? Это из самых очевидных вещей, тот же ларавель как написали выше, гибкий и умеет во все это, на чем вы хотите сэкономить разрабатывая свой фреймворк? Платить за хостинг не 10 баксов в месяц, а 9? И тут вас разочарую, вся нагрузка пойдет на бд, а "тяжелый" ларавель просто закеширует все и будет работать ничем не медленней чем ваш самопис.maxsharun Автор
01.05.2019 11:08Кстати, о кеше и прочих вещах. Это стояло в очереди по разработке второй и правильной версии. Но руки не доходят. А сейчас мне действительно нужно накидать проект и Вы, возможно, правильно меня направляете в сторону «взрослых» фреймворков.
index0h
01.05.2019 10:53Отметили простоту и незамысловатость
Простота первого чтения — может быть, правда причина тут в том что у вас кода мало.
А как же простота поддержки, расширения, тестирования
И эта статья со всеми комментариями полезна тем, кто в такой же ситуации, что и я.
Эта статья про: не смог в фреймворки, напишу свой. Ваш проект — пример того как не надо делать
Samouvazhektra
01.05.2019 20:30+2Я спросил их честное мнение (они не знакомы друг с другом). Отметили простоту и незамысловатость, а также удобство для использования на мелких проектах, где есть какой-то нестандартный функционал.
Значит это либо очень стеснительные разработчики, либо не очень квалифицированные. Потому что даже "знание фреймворка" не показатель, потому что зачастую оно лишь своится к умению наколбасить контроллеры модели и вьюшки по документации
index0h
01.05.2019 10:45Удивительно, почему рудименты типа CI настолько живучие.
Немного посмотрел код, спасать там буквально нечего. Посмотрите symfony, psr, composer, mvcpsFitz
01.05.2019 10:55+1Потому-что много людей как автор поста, они не хотят ставить composer и учить какой-то там psr, зачем это все? Как сказал мне один коллега бывший коллега "Это долго и ненужно, а у нас сейчас сроки горят, поэтому я разрабатываю прямо на сервере через фтп и без фреймворков и какого-то композера. их пока локально поставишь, сроки сгорят".
maxsharun Автор
01.05.2019 11:03Вы правильно подметили про сроки.
pOmelchenko
01.05.2019 11:11У нас есть клиент, которому из-за «горящих сроков» проект написали на kohana (ага, том самом который в 17м году объявил о собственной смерти). Команда писала по 900 строк на метод контроллера. Не писала тестов покрывающих это дело. А теперь любая бабочка севшая рядом с сервером – ломает работу сервиса на «ура».
index0h
01.05.2019 11:14Парадокс в том, что вот эти всяки композеры с пср-ами ускоряют работу, а не замедляют.
psFitz
01.05.2019 11:29Видимо надо было дописать от себя, что все эти вещи ставятся за пол часа и ускоряют работу, а не замедляют) Я думал это очевидно, но нет
maxsharun Автор
01.05.2019 11:01Кстати, я накидал его с оглядкой на CI, Вы правильно заметили. И это же есть причина, по которой я его на данный момент не развиваю в том виде, в котором он есть. Есть мысли относительно архитектуры, библиотек и т.п. Но сил и времени нет на разработку. Эта статья — попытка собрать консилиум и вправить себе мозги.
unnutz
01.05.2019 11:34Сначала не понял при чём тут Continuous Integration и только спустя час дошло, что речь идёт про CodeIgniter.
eandr_67
01.05.2019 12:20+1Видеть в 2019 году конструкцию md5(md5($user['salt']).md5($add['password_new'])) по меньшей мере странно. В PHP встроена библиотека хеширования паролей, потому использование любых самописных велосипедов приводит только к уменьшению безопасности.
Прежде, чем начать писать следующую версию своего фреймворка, попробуйте ознакомится с серией уроков Дмитрия Елисеева: в них подробно объясняется не только как устроены современные феймворки, но и почему они устроены именно так.
И попробуйте использовать в работе нормальную IDE с функцией форматирования кода — хотя бы для того, чтобы привести размещение фигурных скобок к единообразному виду и избавится от лишних пустых строк.Fantyk
02.05.2019 09:37maxsharun Обратите внимание на комментарий.
Если вы хотите развиваться как разработчик, это упомянутая серия уроков вам обязательна к просмотру (более того, вы с первого раза не поймете все, придется возвращаться и пересматривать).
Если вы предприниматель и разработка идет от «денег нет, я сам смогу», то лучший выбор это Laravel/Lumen.
Он не так сложен, есть куча инфы и уроков. Также относительно много дешевых разработчиков на поддержку и развитие (порог входа ниже).
На избыточность функционала не обращайте внимание, загружаются только те файлы, которые нужны для работы конкретной страницы.
Samouvazhektra
01.05.2019 12:21+1Очень частая ошибка новичка, не осилив разобраться с проверенными временем и опытом больших коммьюнити решениями, куда проще наваять свой простой и понятный велосипед… и не важно, что не покрытый тестами, о которых никто не слышал, без миграций который тоже никогда не применялись и само собой из паттернов знаком в лучшем случае синглтон… Посмотрела предыдущую публикацию… и произошедшее кажется вполне логичным, у вас очень слабый опыт разработки. Знаний php, mySql и умения развернуть и поправить модуль Wp это даже еще на уровень джуниора не тянет. Хотя знакомство с git — уже хорошо. В общем вам сюда http://phptherightway.ru/
И обязательно обзавестись нормальной IDE, судя по тому что лежит на гитхабе писалось все в каком-то блокнотеJouretz
01.05.2019 14:44В общем вам сюда phptherightway.ru
У вас ссылка поломатая
Если вы только начинаете работу с PHP, убедитесь в том, что вы используете текущую стабильную версию PHP 5.5
на гитхабе вроде обновляют перевод getjump.github.io/ru-php-the-right-way
polyanin
01.05.2019 12:45+1Напишете свой фреймворк, потом поймёте, что его надо поддерживать, выпускать новые версии, например переписать под будущий php8, обеспечивать обратную совместимость и прочее. И вместо решения бизнес-задач Вы будете тратить время на это всё. Это потеря времени и хорошо разве что для саморазвития. Я через это прошел, писал и поддерживал своё с 2006 года. В определённый момент понял что это тупик и перешел на symfony.
maxsharun Автор
01.05.2019 12:57Очень грамотное замечание. Думаю, что пока не будет команды и возможности поддержки, оставить данный инструмент исключительно, как учебный. Потому что даже корявый проект является проектом и требует ресурсов. И сегодня я окончательно убедился, что задуманный проект буду разрабатывать на Laravel. Не смотря на шквал критики (а она правильная), я правильно сделал, что написал эту статью. Всем большое спасибо.
Samouvazhektra
01.05.2019 13:03если на ларавел, то очень рекомендую незажмотить 9$ на laracast и, прежде чем начать, сначала поизучать туториалы на нем. А если с английским совсем беда то посмотреть интенсив от Дмитрия Елисеева https://elisdn.ru/blog/117/laravel-master-class (ну и паралелльно подтягивать английский)
wertex15
01.05.2019 21:36Кстати, если есть желание найти такого же новичка как вы к себе в команду готов таким быть)
wendel
01.05.2019 13:14+1Я просто написал статью на хабре что я не имею программировать что бы меня научили, а найти информацию в интернете которой действительно много или прочитать книжку я не хочу потому что клиент заплатил да и сроки горят =) Уважаемый, что бы написать свой велосипед, наверно стоит понять как работают другие? Ваш микрофреймворк похож на домашнее задание по программированию, причем на 3-. Как такое стали пропускать на хабр последнее время? Есть же 999999+ форумов где можно пообщаться на такие темы =) Ну и ладно давайте мне минусов.
maxsharun Автор
01.05.2019 13:36Я не совсем согласен с Вашей критикой. В такой ситуация прибываю не я один. И данная статья вместе с комментариями очень полезна как раз таким, как я. Поэтому насчет бесполезности, я бы поспорил. И дело не умении или неумении программировать. Вы рассуждаете как программист. Я же начал программировать, потому что нужно было развивать свой бизнес, а денег на найм специалиста не было. Первым моим приложением стало не Hello World, а парсер каталога запчастей, потом админка для сбора заявок, потом различные микропроекты. И все замечательно развивалось. Мне нравится программировать. Небольшой бизнес вынужден использовать готовые решения на CMS, которые накладывают свою бизнес-модель. Но у небольшого бизнеса часто нет ресурса, чтобы нанимать крутого специалиста или потратить миллион на разработку. Зато есть большие амбиции. Так рождаются проекты «на коленке», потому что быстро, потому что денег надо. В силу обстоятельств я вышел из прежнего бизнеса (он работает и приносит небольшой пассивный доход пока еще). И сейчас мне нужно преодолеть кассовый разрыв и создать быстро прототип решения. Мне повезло, у меня есть навыки и я могу хотя бы выбирать между своим треугольноколесным велосипедом и решением на взрослом фреймворке, создать самостоятельно проект в условиях отсутствия финансирования. Далее развить продажи и передать уже на поддержку одному из программистов и т.п. варианты. И я вижу каждый день своих коллег-предпринимателей, оказавшихся в сложной ситуации (не подготовились) и со взглядом полного отчаяния. Потому что у них вариантов в разы меньше, чем у меня. И я благодарен критике к этой статье, она развивает и не только меня. Ее будут читать другие, которые в той же ситуации, что и я. И эта статья не о том, что, мол, научите меня программировать. Она о подходе, правильном или неправильном. Комментарии помогают услышать мнение, но точно не научат программированию. И подход часто ошибочен, потому что у тебя заканчиваются резервы, завтра аренда, послезавтра налоги и зарплаты. Поэтому выбираются иногда неправильные инструменты. Когда ты преодолеваешь кризис (благодаря кривому решению), то потом выясняется, что ты нагородил кучу ненужного.
Samouvazhektra
01.05.2019 20:24Вы рассуждаете как программист. Я же начал программировать, потому что нужно было развивать свой бизнес, а денег на найм специалиста не было
При этом в прошлой статье вы упоминали, что брались за разработку сайта для другого человека на коммерческой основе.
maxsharun Автор
01.05.2019 20:58Я иногда брался за разработку на коммерческой основе. В основном это коллеги, которым что-то нужно быстро запилить на WP, Joomla и т.п. (заказы я искал, когда была своя студия). Но случай, о котором Вы говорите немного другое. Я решал бизнес-задачу, а заключил договор только на создание сайта, т.к. их ресурс с точки зрения лидогенерации не совсем подходил. Я дал лиды, но у нас возникло недопонимание.
maxsharun Автор
01.05.2019 13:46И когда я преодолею ситуацию, то, наверное, напишу о том, как выбраться, имея минимум средств и времени. Но а пока всем огромное спасибо, в том числе и дизлайкающим.
XeuRun
01.05.2019 14:03Серьезно? Фреймворк? То что я увидел в сорцах кроме названия ничем фреймворк не напоминает, это обычный захардкоженый бойлерплейт для проекта.
Именно из за таких представителей PHP разработчиков, язык и не любят. Такое стыдно даже кому либо показывать, куда хабр скатился.maxsharun Автор
01.05.2019 14:13Вы, наверное, невнимательно читали статью? Я не рекламирую данный продукт, а если и использую, то на своих внутренних проектах. Он, конечно, не дотягивает до многих стандартов, но формально он фреймворк. Это моя ошибка, видимо, нужно было более вдумчиво отнестись к статье и написать что-то вроде: «Что выбрать, когда поджимает время, ресурсы, а проект делать надо». Язык PHP не любят пропорционально его популярности. А разработчиков хватает везде. Опять же Вы рассуждаете, как программист, которому платят зарплату. Я рассуждаю, как предприниматель, который находится в определенных условиях и вынужден выбирать. Мне несложно освоить Laravel, Yii и т.п. У меня остро стоит вопрос по срокам, потому что я попал в ситуацию с кассовым разрывом и, чтобы выбраться, мне нужно тонкое и изящное решение, которое сэкономит мне мои ресурсы. И в данном случае я заказчик, и я исполнитель. Мы (программисты и заказчики) часто находимся по разные стороны потому что преследуем разные цели. Конечно, нужно делать, как правильно. Но с какой позиции оценивать это «правильно» — с точки зрения программирования или экономического положения и ресурсов? Понимаете о чем? И когда на эту статью зайдет предприниматель, выбирая инструменты для разработки, он будет читать эти комментарии и принимать правильное для себя решение.
XeuRun
01.05.2019 14:31Если вы рассуждает как предприниматель, у вас ограниченные сроки и ресурсы, вам нужно тонкое и изящное решение и вы решили писать свой фреймворк то вы явно делаете что то не так. При этом вы сами же пишете что выучить laravel вам не сложно (что тоже вызывает вопросы).
maxsharun Автор
01.05.2019 14:44Этот фреймворк был написан пару лет назад. Мне не сложно выучить новый фреймворк, но это займет время и еще потребуется на разработку, а в силу обстоятельств нужно запустить продажи к конкретной дате. И всё же, ударившись в полемику, я коснулся слишком личных моментов. Я учел эту ошибку при написании статьи. Она должна была выйти с другим заголовком и чуть иначе озвучить проблему. Но комментарии и дизлайки очень наглядно показывают, что предприниматели и программисты живут частов разных мирах. Это не хорошо, не плохо. Это нормально. И всё же я увидел свою ошибку при написании статьи. Посыл и ее смысл должны звучать более отчетливо, чтобы не вызывать дискуссию там, где ее не должно быть.
Samouvazhektra
01.05.2019 20:21то есть по вашему выходит, что у вас абсолютно нет денег на найм специалиста, а проект настолько нестандартный что необходимо писать с нуля? Насколько вы уверены в его нестандартности, и то что решения на opencart/magenta с кучами различных плагинов его не покрывают? Если речь о продажах — то надо полагать это что-то магазинное.
Ну хотя бы на тостер обращайтесь за помощью, И не храните деньги в floatmaxsharun Автор
01.05.2019 21:14Я не знаю, как Вас зовут. Хотел бы по имени обратиться. Я не настолько неопытен, как кажется. Скажу так, программированию мне учиться и учиться, но в свое время, работая в веб-студии мы переделали много проектов на UMI, Joomla, OpenCart (давно это было). Кстати, кодить мне нравится и я достиг бы много, если бы был постоянно в профессии. Но моя ниша в этой сфере — быстро накидать прототип, протестировать нишу и спрос и после этого приглашать спеца. Что касается моего корявого фреймворка, то на нем я накидал проектик, который себя более чем отбил. Но ряд управленческих ошибок спровоцировали кассовый разрыв и вынужденный отказ от одного из направлений. Другой моей ошибкой было то, что достигнув определенного уровня, я пригласил менеджера по продажам, а не программиста. До эры с фреймворками я начал активно изучать именно CMS. Достаточно нестандартное. И ни один из предложенных продуктов не подходит. Магазинного там будет часть, но это совсем нестандартная для классических Интернет-магазинов структура. Но опять же, это не магазин, хотя этот функционал будет присутствовать, но с очень большими особенностями и с оглядкой на текущие бизнес-процессы. Сейчас у меня ровно такая же задача — накидать рабочий прототип (без фанатизма), получить первые отклики, понять, что к чему, увеличить трафик и подтянуть программиста в команду (уже есть, но ему за этот проект надо платить, а я на мели). И было правильное замечание, ему нужно передать проект, с которым он сможет работать. Я уже установил Laravel, начал накидывать структуру (на бумаге), изучаю документацию, делаю первые уроки. Думаю, что все получится.
maxsharun Автор
01.05.2019 21:19О тостере. Знаете чем мне нравится сообщество программистов? В отличие от многих других профессий здесь люди делятся своими знаниями куда охотнее. Если я напишу на тостере, то там мне дадут технические советы. Эта же статья стоила мне нескольких баллов рейтинга, но вместе с вашими комментариями, она окажется куда полезнее поста на том же тостере. И, возможно, среди читателей кто-то в таком же положении. И это будет ему полезно тоже. Хотя, конечно, как и любой другой человек на планете Земля, я думал, в первую очередь, о себе.
maximw
01.05.2019 14:05+2Написание своего фреймворка безусловно отличная штука. Через это проходит, наверно, большинство программистов, для которых работа в удовольствие. Публикация своего творения — занятие на любителя, по-мне так отдает мазохизмом, но ни в коем случае не осуждаю. Пилите дальше свой фрейморк пока энтузиазм не иссякнет. Это отличный опыт, который позволит через призму своих идей и их реализации на интуитивном уровне понять настоящие инструменты. Главное, не останавливайтесь в их изучении (и, конечно, применении).
maxsharun Автор
01.05.2019 14:20Только я не хотел публиковать изначально ссылку. Выложил из-за того, что все равно попросят посмотреть )))
Godebug
01.05.2019 14:16Большого опыта в программировании не было.
В общем я решил написать свой микрофреймворк и создавать проект на нем.
И я решил, что мой фреймворк недостаточен.
Так все делают в начале, но не все статьи пишут. Почему? Потому что ничего полезного :)maxsharun Автор
01.05.2019 14:18Я сообщил причины, по которым написал статью в ней самой и в комментариях. И не фреймворк на оценку выставил. Я знал и так все его косяки. Хотя у него есть плюс — с финансовой точки зрения он более чем себя оправдал.
morozovsk
01.05.2019 16:50+1Тоже писал свой фреймворк на начальной стадии развития в разработке лет 10 назад.
Причины были такие:
- с фреймворками раньше не работал
- раньше работал только с cms, а они вообще не гибкие и для нестандартного проекта создают проблем больше чем решают
- на работе была большая команда, но использовали самописный фреймворк, да ещё и на php 4
- фреймворки были сложные и медленные. документации на русском не было, либо была устаревшая
- zend framework требовал как минимум php5, а многие сидели на php4
- в моём окружении (коллеги с работы) мало кто использовал фреймворки (либо только свой код, либо cms) и казалось, что они не нужны
- не работал с ООП
- работа вытягивала все силы и в свободное от неё время я играл в игры и смотрел сериалы
- не было никакого стимула развиваться, по тому что на работе хорошо платили и мало требовали
- свой проект начинался с пары страниц и казалось, что фрейморк для него — оверхед
Пока писал свой фреймворк возникало очень много сложных вопросов, поэтому постоянно приходилось подглядывать реализацию у zend framework. Когда с ним более менее разобрался, то сменил работу на ZF.
Спустя какое-то время познакомился в свободное от работы время с Yii. Следующая работа была на нём.
Если бы в свободное от работы время ничего не изучал, то сейчас бы до сих пор работал на первой работе-болоте, как некоторые мои коллеги уже более 10 лет. При этом laravel до сих пор не осилил (хотя я себя успокаиваю, что он мне просто не нравится). Количество вакансий на laravel/symfony пугающе обгоняет такие на yii и через пару лет можно реально остаться с очень узким выбором вакансий. Опять же пока не хватает мотивации и свободного времени. Есть ещё куча всего интересного на что оно уходит: devops, машинное обучение, смарт-контракты, nodejs, новые базы данных (influxdb, clickhouse), написание статей на хабр опять же и т.д. и т.п.
beat
01.05.2019 17:20+1код конечно ужасный, но идея саморазвития похвальна, что бы потом не вырасти программистом который не знает php, но знает laravel фреймворк з кучей «магии»
a-tk
01.05.2019 19:39Главное — вырасти из велосипедов.
maxsharun Автор
01.05.2019 21:20Этот день стал очень продуктивным в плане роста ))
a-tk
01.05.2019 22:02Вас промотивировали на изучение лавки или хотя бы ZF?
maxsharun Автор
02.05.2019 16:51Лавки. Не могу сказать, что сложно изучать. Просто очень обширный фреймворк и в короткий срок трудно все запомнить. Но дело движется.
a-tk
02.05.2019 17:57А про быстро запомнить речь и не идёт обычно.
Потратьте месяц-два, наработайте практику.maxsharun Автор
02.05.2019 18:38Я и не пытаюсь )) Сейчас речь идет о создании работающего прототипа. Там относительно все просто. Во всяком случае на моем кривом фреймворке это делается за вечер.
pewpew
01.05.2019 22:25+1Вы не представляете, сколько
фреймворковвелосипедов написал я, оттачивая знания. Но ни один публиковать не хочется. Всё это попытки понять науку и вырости над самим собой.
Да, часть проектов была написана на этих своих поделках, но каждый следующий велосипед смотрел на предыдущий, как на… ну вы сами понимаете. Просто поглядите на свой код пятилетней давности.
В итоге, я перешёл на взрослые фреймворки, начиная с Kohana, и дальше пробовл и пробовал… Zend, YII1,2, немного Laravel, не обошлось и без микро-фреймворков (тот же Slim)…
Одно точно — для обучения это безусловно хорошо. Но лучше для хобби-проектов и не в продакшин. А если планируется командная работа, то лучше выбрать из имеющихся и проверенных решений. Это по-взрослому.
Кроме того, там и правда уже решены многие задачи, как то кэширование, crud, авторизация и структура приложения. Да, в конце концов, куча примеров разных приложений и модулей на GitHub. Можно смотреть в чужой код, чтобы понять, воспользоваться или взять на заметку.maxsharun Автор
02.05.2019 16:49Не смотря на отрицательный отклик на статью, я всё же получил бесценный пинок под зад и очень продвинулся. Сейчас, не спеша, спешу. Изучаю плотно и вдумчиво матчасть
arku
02.05.2019 16:19+2Я бы настоятельно рекомендовал вернуться вам на пару шагов назад и ознакомиться с PHP по порядку.
1. Code style — PSR-2 и только. Самый важный пункт как я считаю. Ваш текущий код невозможно читать
2. ООП. Namespace, имена классов. В PHP обычно используется CamelCase
3. MVC у вас в целом реализован, но на троечку мягко говоря. В шаблон например нельзя передать данные :)
4. Структура файлов очень плохая. Задумайтесь. Есть общемировые практики, следовать бездумно которым не стоит разумеется, но учитывать нужно обязательно.
Сама идея делать свой MVC фреймворк — отличная. Но делать реальные проекты на нем — скорее ужасная. Если вы откажетесь от проекта, то следующему проще будет переписать проект с нуля, чем понимать что делает ваш фреймворк :) Тем не менее, современные фреймворки весьма сложные в понимании, что и как работает, они слабо подходят для изучения. С ними можно работать не понимания что под капотом, но это ведет к другим проблемам, поэтому сделать свой фреймворк «по фану» — рекомендую :) Я недавно делал одно тестовое, несмотря на то, что я считаю его просто MVC каркасом, могу порекомендовать вам разобрать каждую строчку github.com/arku31/mvc_blog
Несмотря на то то, что оно незаконченное (был лимит по времени), не имеет тестов и имеет некоторые проблемы — это будет очень полезно для вас, т.к. это чистый php (такое было требование) и каждая строка написана руками и с определенной целью.
Обратите внимание на работу с шаблонами, моделями, сессиями, request/response. Это тот минимум, который требуется в минимальном понимании что такое фреймворк :)maxsharun Автор
02.05.2019 16:47Огромное спасибо. Конструктивный комментарий. И самое интересное то, что я как раз начал почти в таком порядке. Сейчас изучаю Laravel, параллельно (пока без фанатизма) просматриваю, что под капотом. Я создал два проекта — один черновик для Laravel, другой чистовик. Там бекенд (на Ларавел) и во фронтенд воткнул vue.js. Кстати, все оказалось не так сложно. И мой рецепт для себя в том, что я создам работающий прототип (аккуратно) с простыми функциями (на уровне 1-го класса), получу первый отклик и уже потом передам программисту, будучи уверенным, что смогу оплатить его труд.
sk134679
02.05.2019 16:37Немного не в тему, но все-таки пользуясь случаем хочу спросить ) У кого какое мнение относительно MODx Revo? Года три назад очень срочно понадобилось сделать сайт с довеском в виде системы «автоматического оформления» договоров. Т.е. клиент заходит на сайт, вносит кучу данных на основании которых генерируется вордовский файлик со сформированным договором, который печатают и подписывают. На тот момент никаких фреймворков или cms и близко не знал, задачу надо было решить срочно и таким образом, что бы в дальнейшем ее поддерживали чистокровные юристы без малейшего понятия о том, как оно работает. Ночь гуглил, выбрал MODx, потом около недели собственно писал, потом еще пару недель допиливал )). В принципе MODx очень понравился, причем именно тем, что практически ничем не ограничивает. Для себя я его поставил как раз посередине, между классическими cms типа Wordpress/Joomla и полноценными фреймворками. И для изучения гораздо проще, чем фреймворк и нет особых ограничений cms. Может он автору подойдет? Но, т.к. у меня ноль опыта в современных фреймворках, то, возможно, я ошибаюсь и меня поправят )
maxsharun Автор
02.05.2019 16:41Я прекрасно знаю Modx, когда-то изучил Evo, потом Revo. Нет, этот продукт не подойдет. Вообще, я определился и с фреймворком и с архитектурой, и уже накидываю проект в процессе изучения. Я разделил Backend и Frontend по разным адресам. Определился с маршрутами, списком контроллеров. Сейчас отрабатываю в Laravel простые упражнения и вникаю во фреймворк. На стороне Frontend у меня Vue.js, но до фронтенда руки не дошли пока, т.к. мне нужно создать нормальный бекенд, дождаться ответа по документации API от одного из партнеров и т.п.
maximw
03.05.2019 13:45Ну тогда, если у вас уже есть немалый багаж знаний, изучить другой фреймворк будет не сложно.
Skull
02.05.2019 23:03+2Ностальгия! Это же улучшенная версия моего фреймворка 2010го года!
Сдвиньте сроки на неделю и разберитесь с Laravel. Адекватному клиенту все можно объяснить. Хотя бы тем что самописное решение поддерживать никто не будет после вашего уходаmaxsharun Автор
03.05.2019 14:18+1Я так и сделал. А адекватный клиент — я сам ))) И сроки поджимают не просто так ))) Но спасибо сообществу. Это подстегнуло к очередному витку развития.
unnutz
Без Composer'а? PSR не нужен? Зачем?
Используйте Lumen и добавляйте нужный Вам функционал, но городить еще что-то… Пожалейте того, кто будет сопровождать код. Ему же придется под Ваш стандарт переучиваться, вникать.