В эпоху богатых по функционалу Yii2, Laravel, CI и прочих я вдруг решил написать свой собственный фреймворк (микрофреймворк) и не забавы ради, а для разработки конкретного проекта (уже закрыт). Это не реклама моего фреймворка, а небольшой очерк, так, навеяло вчера.


Я работал в одной компании, продающей автозапчасти в розницу и возникла идея создать сервис вроде zapradar.ru. До этого я был знаком лишь с одним фреймворком — Codeigniter 2. Проект решил делать на PHP 7. Большого опыта в программировании не было. Я начал изучать документацию Yii, Codeigniter 3. Оба фреймворка устанавливаются через консоль с кучей дополнительных модулей, зависимостей и т.п. Yii2 мне показался и вовсе неудобным (может, в силу отсутствия опыта). В общем я решил написать свой микрофреймворк и создавать проект на нем. Ссылку на него я дам в конце статьи.


Позже с помощью этого инструмента я создал еще несколько сайтов с нестандартным функционалом.


Мне предстоит реализация еще одного сложного проекта (своими силами или в сотрудничестве с другим более опытным разработчиком). И я решил, что мой фреймворк недостаточен. Поэтому начал изучать документацию и возможности других. Первым делом, я написал краткое ТЗ для своего проекта. Попытался сделать некоторые вещи на Yii2, Laravel. Первый мне не понравился своей избыточностью и множеством зависимостей, второй понравился. И всё же пришел к выводу, что, скорее всего, буду строить на своём фреймворке (но выбираю между ним и Laravel).


Я объясню, зачем это оказалось нужным мне. Идея использовать сторонний инструмент хороша тем, что уже есть множество бибилиотек, за которыми стоят целые команды. Выбирая Laravel, Yii2, CI и т.п. ты по сути нанял целую команду, которая уже многое сделала для твоего проекта. Но небольшой инструмент, созданный своими руками, позволит внедрить свою архитектуру и стандарты. Вопрос лишь целесообразности. Кроме того в указанных фреймворках не так много бибилиотек, которые в своём проекте я буду использовать, как есть. Почти всё придется писать с нуля. И именно последний момент склоняет меня к уже написанному ещё одному никому неизвестному PHP фреймворку.


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


Вот ссылка на GITHUB. Кстати, кому интересно, делитесь библиотеками. Вдруг это будет кому-то полезно (кроме меня).

Комментарии (79)


  1. unnutz
    01.05.2019 08:45
    +2

    Без Composer'а? PSR не нужен? Зачем?

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


    Используйте Lumen и добавляйте нужный Вам функционал, но городить еще что-то… Пожалейте того, кто будет сопровождать код. Ему же придется под Ваш стандарт переучиваться, вникать.


  1. yu-hritsaiy
    01.05.2019 09:37

    Нужен микрофреймворк — Symfony 4, Slim. А ваш код написал не в самых лучших практиках.


    1. yu-hritsaiy
      01.05.2019 09:40

      Очень забавно выглядит $post = (!empty($_POST))? true: false;


  1. oldcastor
    01.05.2019 09:56

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


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


    1. shushu
      01.05.2019 13:25

      Знаете, я как то начал изучать Ларавел (года 4 назад) и… забросил. Я решил что у меня нету столько свободного времени что бы тратить его на Ларавел.

      Слишком много магии в этом фреймворке о которой просто нужно знать.
      Ну и как по мне: Yii, Symfony напорядок удобней в использовании.


      1. sonkei
        01.05.2019 15:47

        Если нет времени возможно стоило взглянуть в сторону готовых CMS?


        1. maxsharun Автор
          01.05.2019 15:47

          Как раз, CMS и не подходят. Все будет совсем нестандартно.


          1. Samouvazhektra
            01.05.2019 20:28
            +1

            Я бы вам таки очень посоветовала обсудить необходимое с более опытным разработчиком/ами. Есть очень больше подозрения что нестандартность решения вызвана слабым знакомством со стандартными


            1. maxsharun Автор
              01.05.2019 20:52

              Я точно знаю, что CMS мне не подходит — ни одна. Потому что я точно знаю, чего я хочу. Но спасибо за рекомендацию.


              1. Jouretz
                01.05.2019 21:28
                +1

                CMS — система управления контентом. У вас либо в проекте в принципе контента не планируется, либо вы не знакомы со всеми возможностями всех существующих CMS. В таком ключе возникает вопрос почему вы уверены что вам PHP-то подходит?


                1. maxsharun Автор
                  01.05.2019 21:48

                  1) Я знаком со многими CMS (WP, Joomla, Bitrix, OpenCart). Контента не предполагается в привычном виде, а тот, что будет формируется несколько иным способом, чем предлагается в классическом виде.
                  2) Да, подходит именно PHP по нескольким причинам: скорость разработки; часть функционала уже даже готова (на PHP). Остальные варианты (Python) тоже здорово, но это будет дольше (потому что мне нужно собрать денег на спеца и оторвать его от текущей своей работы), дороже и не факт, что проект выстрелит (простая статистика — часть проектов не работает).


  1. maxsharun Автор
    01.05.2019 10:00

    Спасибо за комментарии и дизлайки. Это развивает. Отдельное спасибо за конструктивную критику и подсказки со стороны yu-hritsaiy и oldcastor. И я еще раз объясню (дизлайкающим), что ищу основу для своего решения и эта статья спровоцировать соответствующую дискуссию, чтобы узнать больше (а не реклама фреймворка, хотя я к нему уже и привык).


  1. a-tk
    01.05.2019 10:03

    Лет 15 назад написание собственных фреймворков на PHP было в порядке вещей. Но это было лет 15 назад…


    1. maxsharun Автор
      01.05.2019 10:09

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


      1. pOmelchenko
        01.05.2019 11:01

        Судя по этому комментарию, вы сейчас выбрали «деструктивный подход», а зачем? Что вас останавливает собирать лучшее уже сейчас?

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

        Во-первых,

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

        Во-вторых, отсутствие стандартов которые уже приняты в сообществе (Composer и PSR о которых уже упомянули ранее).

        В-третьих, отсутствует покрытие тестами хоть чего-либо.

        Дальше просто перечислю…

        — отсутствуют нэймспэйсы
        — автолоадер вы не поняли
        — mysqli вместо pdo
        — Database полон sql инъекций
        — mvc который не mvc

        В общем… Там очень много мест которые надо переписывать с нуля, даже если задаваться целью написания собственного фрэймворка. Одно я точно могу вам посоветовать уже сейчас, найдите время и деньги пройти курсы php разработки.

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


        1. maxsharun Автор
          01.05.2019 12:08

          Очень ценный, вправляющий мозги и подробный комментарий. И не только Вы, но и всё сообщество меня переубедило. Вообще, всё началось с того, что мне прислали тестовое задание на Yii, я не знаком был с фреймворком, но справился. Не могу сказать, что Yii мне понравился. Почитал документацию Laravel, он мне показался интереснее. К тому же относительно рядом есть опытный разработчик. Не зря я потратил время на статью и подвергся критике. Спасибо.


          1. wertex15
            01.05.2019 21:30
            +2

            Привет! Я тоже новичок как и вы :) Долгое время выбирал между YII и Laravel. Смотрел так же в сторону Symfony, но после неоднократных комментариев о том что порог вхождения в последний самый высокий перестал его рассматривать, хоть и сейчас часто слежу за его изменениями.
            Для своего первого проекта выбрал таки YII. Написал работающее приложение. YII показался мне удобным по причине легкого входа для новичков. Тем что там из коробки есть генератор шаблонов — gii, много интерфейсных элементов (списки, таблиц и прочее). Новый проект пишу на laravel. Он мне кажется чуть сложнее, но вспоминая как это реализовывалось в YII становится проще писать.
            Мой проект тоже по ТЗ и CMS мне ну никак не подойдет, но писать свой фреймворк я не хотел и не хочу, ибо зачем… есть уже годами «вылизанное» средство разработки. Он позволяет быстро и качественно разрабатывать… есть много расширений/дополнений/практик.
            ЕдинственнLaravelочу сделать в своих проектах дак это DDD, которого нет в Laravel и в YII. Но мне пока до этого далеко.

            Если примите мой совет он будет такой:
            — курсы по PHP действительно не будут лишними (пусть даже бесплатные)
            — возьмите Laravel :)


            1. maxsharun Автор
              01.05.2019 21:34

              Спасибо. PHP стараюсь постоянно изучать. Но опять же я не нахожусь в профессии. Поэтому много пробелов.


              1. wertex15
                01.05.2019 21:57

                Я вот еще заглядываю из за угла в сторону Python )


    1. sanchezzzhak
      02.05.2019 10:23
      +1

      Каждый уважающий себя пхп программист должен написать пхп фейерверк с нуля, после ему открывается третий глаз, который открывает истину: все уже придумано до нас.


  1. psFitz
    01.05.2019 10:35

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


    1. maxsharun Автор
      01.05.2019 10:44

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


      1. psFitz
        01.05.2019 10:52
        +1

        Дело не в нормальности, а в стандартах, которых у вас нет. да и простой он?
        Простой пока нужно сделать пару страниц и работают люди которые разрабатывают на нем, как посмотреть структуру таблицы в бд без открытия phpmyadmin? где хотя-бы слой сервис? где композер? внедрение зависимостей? что будет если понадобится добавить кеш?
        А вьюхи наследуются? А если надо будет добавить еще один css или поменять хедер? везде по коду будете бегать и менять? А если поменяется структура таблички? Будете по коду искать использование этой таблицы и менять код везде? Это из самых очевидных вещей, тот же ларавель как написали выше, гибкий и умеет во все это, на чем вы хотите сэкономить разрабатывая свой фреймворк? Платить за хостинг не 10 баксов в месяц, а 9? И тут вас разочарую, вся нагрузка пойдет на бд, а "тяжелый" ларавель просто закеширует все и будет работать ничем не медленней чем ваш самопис.


        1. maxsharun Автор
          01.05.2019 11:08

          Кстати, о кеше и прочих вещах. Это стояло в очереди по разработке второй и правильной версии. Но руки не доходят. А сейчас мне действительно нужно накидать проект и Вы, возможно, правильно меня направляете в сторону «взрослых» фреймворков.


      1. index0h
        01.05.2019 10:53

        Отметили простоту и незамысловатость

        Простота первого чтения — может быть, правда причина тут в том что у вас кода мало.
        А как же простота поддержки, расширения, тестирования


        И эта статья со всеми комментариями полезна тем, кто в такой же ситуации, что и я.

        Эта статья про: не смог в фреймворки, напишу свой. Ваш проект — пример того как не надо делать


        1. maxsharun Автор
          01.05.2019 11:02

          Спасибо за конструктивную критику. Именно это мне и нужно.


      1. Samouvazhektra
        01.05.2019 20:30
        +2

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

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


  1. index0h
    01.05.2019 10:45

    Удивительно, почему рудименты типа CI настолько живучие.
    Немного посмотрел код, спасать там буквально нечего. Посмотрите symfony, psr, composer, mvc


    1. psFitz
      01.05.2019 10:55
      +1

      Потому-что много людей как автор поста, они не хотят ставить composer и учить какой-то там psr, зачем это все? Как сказал мне один коллега бывший коллега "Это долго и ненужно, а у нас сейчас сроки горят, поэтому я разрабатываю прямо на сервере через фтп и без фреймворков и какого-то композера. их пока локально поставишь, сроки сгорят".


      1. maxsharun Автор
        01.05.2019 11:03

        Вы правильно подметили про сроки.


        1. pOmelchenko
          01.05.2019 11:11

          У нас есть клиент, которому из-за «горящих сроков» проект написали на kohana (ага, том самом который в 17м году объявил о собственной смерти). Команда писала по 900 строк на метод контроллера. Не писала тестов покрывающих это дело. А теперь любая бабочка севшая рядом с сервером – ломает работу сервиса на «ура».


        1. index0h
          01.05.2019 11:14

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


        1. psFitz
          01.05.2019 11:29

          Видимо надо было дописать от себя, что все эти вещи ставятся за пол часа и ускоряют работу, а не замедляют) Я думал это очевидно, но нет


    1. maxsharun Автор
      01.05.2019 11:01

      Кстати, я накидал его с оглядкой на CI, Вы правильно заметили. И это же есть причина, по которой я его на данный момент не развиваю в том виде, в котором он есть. Есть мысли относительно архитектуры, библиотек и т.п. Но сил и времени нет на разработку. Эта статья — попытка собрать консилиум и вправить себе мозги.


    1. unnutz
      01.05.2019 11:34

      Сначала не понял при чём тут Continuous Integration и только спустя час дошло, что речь идёт про CodeIgniter.


  1. eandr_67
    01.05.2019 12:20
    +1

    Видеть в 2019 году конструкцию md5(md5($user['salt']).md5($add['password_new'])) по меньшей мере странно. В PHP встроена библиотека хеширования паролей, потому использование любых самописных велосипедов приводит только к уменьшению безопасности.

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

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


    1. Fantyk
      02.05.2019 09:37

      maxsharun Обратите внимание на комментарий.

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

      Если вы предприниматель и разработка идет от «денег нет, я сам смогу», то лучший выбор это Laravel/Lumen.
      Он не так сложен, есть куча инфы и уроков. Также относительно много дешевых разработчиков на поддержку и развитие (порог входа ниже).
      На избыточность функционала не обращайте внимание, загружаются только те файлы, которые нужны для работы конкретной страницы.


  1. Samouvazhektra
    01.05.2019 12:21
    +1

    Очень частая ошибка новичка, не осилив разобраться с проверенными временем и опытом больших коммьюнити решениями, куда проще наваять свой простой и понятный велосипед… и не важно, что не покрытый тестами, о которых никто не слышал, без миграций который тоже никогда не применялись и само собой из паттернов знаком в лучшем случае синглтон… Посмотрела предыдущую публикацию… и произошедшее кажется вполне логичным, у вас очень слабый опыт разработки. Знаний php, mySql и умения развернуть и поправить модуль Wp это даже еще на уровень джуниора не тянет. Хотя знакомство с git — уже хорошо. В общем вам сюда http://phptherightway.ru/
    И обязательно обзавестись нормальной IDE, судя по тому что лежит на гитхабе писалось все в каком-то блокноте


    1. Jouretz
      01.05.2019 14:44

      В общем вам сюда phptherightway.ru

      У вас ссылка поломатая
      Если вы только начинаете работу с PHP, убедитесь в том, что вы используете текущую стабильную версию PHP 5.5

      на гитхабе вроде обновляют перевод getjump.github.io/ru-php-the-right-way


  1. polyanin
    01.05.2019 12:45
    +1

    Напишете свой фреймворк, потом поймёте, что его надо поддерживать, выпускать новые версии, например переписать под будущий php8, обеспечивать обратную совместимость и прочее. И вместо решения бизнес-задач Вы будете тратить время на это всё. Это потеря времени и хорошо разве что для саморазвития. Я через это прошел, писал и поддерживал своё с 2006 года. В определённый момент понял что это тупик и перешел на symfony.


    1. maxsharun Автор
      01.05.2019 12:57

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


      1. Samouvazhektra
        01.05.2019 13:03

        если на ларавел, то очень рекомендую незажмотить 9$ на laracast и, прежде чем начать, сначала поизучать туториалы на нем. А если с английским совсем беда то посмотреть интенсив от Дмитрия Елисеева https://elisdn.ru/blog/117/laravel-master-class (ну и паралелльно подтягивать английский)


      1. wertex15
        01.05.2019 21:36

        Кстати, если есть желание найти такого же новичка как вы к себе в команду готов таким быть)


  1. wendel
    01.05.2019 13:14
    +1

    Я просто написал статью на хабре что я не имею программировать что бы меня научили, а найти информацию в интернете которой действительно много или прочитать книжку я не хочу потому что клиент заплатил да и сроки горят =) Уважаемый, что бы написать свой велосипед, наверно стоит понять как работают другие? Ваш микрофреймворк похож на домашнее задание по программированию, причем на 3-. Как такое стали пропускать на хабр последнее время? Есть же 999999+ форумов где можно пообщаться на такие темы =) Ну и ладно давайте мне минусов.


    1. maxsharun Автор
      01.05.2019 13:36

      Я не совсем согласен с Вашей критикой. В такой ситуация прибываю не я один. И данная статья вместе с комментариями очень полезна как раз таким, как я. Поэтому насчет бесполезности, я бы поспорил. И дело не умении или неумении программировать. Вы рассуждаете как программист. Я же начал программировать, потому что нужно было развивать свой бизнес, а денег на найм специалиста не было. Первым моим приложением стало не Hello World, а парсер каталога запчастей, потом админка для сбора заявок, потом различные микропроекты. И все замечательно развивалось. Мне нравится программировать. Небольшой бизнес вынужден использовать готовые решения на CMS, которые накладывают свою бизнес-модель. Но у небольшого бизнеса часто нет ресурса, чтобы нанимать крутого специалиста или потратить миллион на разработку. Зато есть большие амбиции. Так рождаются проекты «на коленке», потому что быстро, потому что денег надо. В силу обстоятельств я вышел из прежнего бизнеса (он работает и приносит небольшой пассивный доход пока еще). И сейчас мне нужно преодолеть кассовый разрыв и создать быстро прототип решения. Мне повезло, у меня есть навыки и я могу хотя бы выбирать между своим треугольноколесным велосипедом и решением на взрослом фреймворке, создать самостоятельно проект в условиях отсутствия финансирования. Далее развить продажи и передать уже на поддержку одному из программистов и т.п. варианты. И я вижу каждый день своих коллег-предпринимателей, оказавшихся в сложной ситуации (не подготовились) и со взглядом полного отчаяния. Потому что у них вариантов в разы меньше, чем у меня. И я благодарен критике к этой статье, она развивает и не только меня. Ее будут читать другие, которые в той же ситуации, что и я. И эта статья не о том, что, мол, научите меня программировать. Она о подходе, правильном или неправильном. Комментарии помогают услышать мнение, но точно не научат программированию. И подход часто ошибочен, потому что у тебя заканчиваются резервы, завтра аренда, послезавтра налоги и зарплаты. Поэтому выбираются иногда неправильные инструменты. Когда ты преодолеваешь кризис (благодаря кривому решению), то потом выясняется, что ты нагородил кучу ненужного.


      1. Samouvazhektra
        01.05.2019 20:24

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

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


        1. maxsharun Автор
          01.05.2019 20:58

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


    1. maxsharun Автор
      01.05.2019 13:46

      И когда я преодолею ситуацию, то, наверное, напишу о том, как выбраться, имея минимум средств и времени. Но а пока всем огромное спасибо, в том числе и дизлайкающим.


  1. XeuRun
    01.05.2019 14:03

    Серьезно? Фреймворк? То что я увидел в сорцах кроме названия ничем фреймворк не напоминает, это обычный захардкоженый бойлерплейт для проекта.

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


    1. maxsharun Автор
      01.05.2019 14:13

      Вы, наверное, невнимательно читали статью? Я не рекламирую данный продукт, а если и использую, то на своих внутренних проектах. Он, конечно, не дотягивает до многих стандартов, но формально он фреймворк. Это моя ошибка, видимо, нужно было более вдумчиво отнестись к статье и написать что-то вроде: «Что выбрать, когда поджимает время, ресурсы, а проект делать надо». Язык PHP не любят пропорционально его популярности. А разработчиков хватает везде. Опять же Вы рассуждаете, как программист, которому платят зарплату. Я рассуждаю, как предприниматель, который находится в определенных условиях и вынужден выбирать. Мне несложно освоить Laravel, Yii и т.п. У меня остро стоит вопрос по срокам, потому что я попал в ситуацию с кассовым разрывом и, чтобы выбраться, мне нужно тонкое и изящное решение, которое сэкономит мне мои ресурсы. И в данном случае я заказчик, и я исполнитель. Мы (программисты и заказчики) часто находимся по разные стороны потому что преследуем разные цели. Конечно, нужно делать, как правильно. Но с какой позиции оценивать это «правильно» — с точки зрения программирования или экономического положения и ресурсов? Понимаете о чем? И когда на эту статью зайдет предприниматель, выбирая инструменты для разработки, он будет читать эти комментарии и принимать правильное для себя решение.


      1. XeuRun
        01.05.2019 14:31

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


        1. maxsharun Автор
          01.05.2019 14:44

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


          1. Samouvazhektra
            01.05.2019 20:21

            то есть по вашему выходит, что у вас абсолютно нет денег на найм специалиста, а проект настолько нестандартный что необходимо писать с нуля? Насколько вы уверены в его нестандартности, и то что решения на opencart/magenta с кучами различных плагинов его не покрывают? Если речь о продажах — то надо полагать это что-то магазинное.
            Ну хотя бы на тостер обращайтесь за помощью, И не храните деньги в float


            1. maxsharun Автор
              01.05.2019 21:14

              Я не знаю, как Вас зовут. Хотел бы по имени обратиться. Я не настолько неопытен, как кажется. Скажу так, программированию мне учиться и учиться, но в свое время, работая в веб-студии мы переделали много проектов на UMI, Joomla, OpenCart (давно это было). Кстати, кодить мне нравится и я достиг бы много, если бы был постоянно в профессии. Но моя ниша в этой сфере — быстро накидать прототип, протестировать нишу и спрос и после этого приглашать спеца. Что касается моего корявого фреймворка, то на нем я накидал проектик, который себя более чем отбил. Но ряд управленческих ошибок спровоцировали кассовый разрыв и вынужденный отказ от одного из направлений. Другой моей ошибкой было то, что достигнув определенного уровня, я пригласил менеджера по продажам, а не программиста. До эры с фреймворками я начал активно изучать именно CMS. Достаточно нестандартное. И ни один из предложенных продуктов не подходит. Магазинного там будет часть, но это совсем нестандартная для классических Интернет-магазинов структура. Но опять же, это не магазин, хотя этот функционал будет присутствовать, но с очень большими особенностями и с оглядкой на текущие бизнес-процессы. Сейчас у меня ровно такая же задача — накидать рабочий прототип (без фанатизма), получить первые отклики, понять, что к чему, увеличить трафик и подтянуть программиста в команду (уже есть, но ему за этот проект надо платить, а я на мели). И было правильное замечание, ему нужно передать проект, с которым он сможет работать. Я уже установил Laravel, начал накидывать структуру (на бумаге), изучаю документацию, делаю первые уроки. Думаю, что все получится.


            1. maxsharun Автор
              01.05.2019 21:19

              О тостере. Знаете чем мне нравится сообщество программистов? В отличие от многих других профессий здесь люди делятся своими знаниями куда охотнее. Если я напишу на тостере, то там мне дадут технические советы. Эта же статья стоила мне нескольких баллов рейтинга, но вместе с вашими комментариями, она окажется куда полезнее поста на том же тостере. И, возможно, среди читателей кто-то в таком же положении. И это будет ему полезно тоже. Хотя, конечно, как и любой другой человек на планете Земля, я думал, в первую очередь, о себе.


            1. maxsharun Автор
              01.05.2019 21:29

              И денег нет на данный момент. Деньги, вообще, вещь пластичная.


  1. maximw
    01.05.2019 14:05
    +2

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


    1. maxsharun Автор
      01.05.2019 14:19

      Спасибо за конструктив )))


      1. maximw
        01.05.2019 22:41

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


    1. maxsharun Автор
      01.05.2019 14:20

      Только я не хотел публиковать изначально ссылку. Выложил из-за того, что все равно попросят посмотреть )))


  1. Godebug
    01.05.2019 14:16

    Большого опыта в программировании не было.

    В общем я решил написать свой микрофреймворк и создавать проект на нем.

    И я решил, что мой фреймворк недостаточен.

    Так все делают в начале, но не все статьи пишут. Почему? Потому что ничего полезного :)


    1. maxsharun Автор
      01.05.2019 14:18

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


  1. 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), написание статей на хабр опять же и т.д. и т.п.


  1. beat
    01.05.2019 17:20
    +1

    код конечно ужасный, но идея саморазвития похвальна, что бы потом не вырасти программистом который не знает php, но знает laravel фреймворк з кучей «магии»


    1. a-tk
      01.05.2019 19:39

      Главное — вырасти из велосипедов.


      1. maxsharun Автор
        01.05.2019 21:20

        Этот день стал очень продуктивным в плане роста ))


        1. a-tk
          01.05.2019 22:02

          Вас промотивировали на изучение лавки или хотя бы ZF?


          1. maxsharun Автор
            02.05.2019 16:51

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


            1. a-tk
              02.05.2019 17:57

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


              1. maxsharun Автор
                02.05.2019 18:38

                Я и не пытаюсь )) Сейчас речь идет о создании работающего прототипа. Там относительно все просто. Во всяком случае на моем кривом фреймворке это делается за вечер.


  1. pewpew
    01.05.2019 22:25
    +1

    Вы не представляете, сколько фреймворковвелосипедов написал я, оттачивая знания. Но ни один публиковать не хочется. Всё это попытки понять науку и вырости над самим собой.
    Да, часть проектов была написана на этих своих поделках, но каждый следующий велосипед смотрел на предыдущий, как на… ну вы сами понимаете. Просто поглядите на свой код пятилетней давности.
    В итоге, я перешёл на взрослые фреймворки, начиная с Kohana, и дальше пробовл и пробовал… Zend, YII1,2, немного Laravel, не обошлось и без микро-фреймворков (тот же Slim)…
    Одно точно — для обучения это безусловно хорошо. Но лучше для хобби-проектов и не в продакшин. А если планируется командная работа, то лучше выбрать из имеющихся и проверенных решений. Это по-взрослому.
    Кроме того, там и правда уже решены многие задачи, как то кэширование, crud, авторизация и структура приложения. Да, в конце концов, куча примеров разных приложений и модулей на GitHub. Можно смотреть в чужой код, чтобы понять, воспользоваться или взять на заметку.


    1. maxsharun Автор
      02.05.2019 16:49

      Не смотря на отрицательный отклик на статью, я всё же получил бесценный пинок под зад и очень продвинулся. Сейчас, не спеша, спешу. Изучаю плотно и вдумчиво матчасть


  1. 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. Это тот минимум, который требуется в минимальном понимании что такое фреймворк :)


    1. maxsharun Автор
      02.05.2019 16:47

      Огромное спасибо. Конструктивный комментарий. И самое интересное то, что я как раз начал почти в таком порядке. Сейчас изучаю Laravel, параллельно (пока без фанатизма) просматриваю, что под капотом. Я создал два проекта — один черновик для Laravel, другой чистовик. Там бекенд (на Ларавел) и во фронтенд воткнул vue.js. Кстати, все оказалось не так сложно. И мой рецепт для себя в том, что я создам работающий прототип (аккуратно) с простыми функциями (на уровне 1-го класса), получу первый отклик и уже потом передам программисту, будучи уверенным, что смогу оплатить его труд.


  1. sk134679
    02.05.2019 16:37

    Немного не в тему, но все-таки пользуясь случаем хочу спросить ) У кого какое мнение относительно MODx Revo? Года три назад очень срочно понадобилось сделать сайт с довеском в виде системы «автоматического оформления» договоров. Т.е. клиент заходит на сайт, вносит кучу данных на основании которых генерируется вордовский файлик со сформированным договором, который печатают и подписывают. На тот момент никаких фреймворков или cms и близко не знал, задачу надо было решить срочно и таким образом, что бы в дальнейшем ее поддерживали чистокровные юристы без малейшего понятия о том, как оно работает. Ночь гуглил, выбрал MODx, потом около недели собственно писал, потом еще пару недель допиливал )). В принципе MODx очень понравился, причем именно тем, что практически ничем не ограничивает. Для себя я его поставил как раз посередине, между классическими cms типа Wordpress/Joomla и полноценными фреймворками. И для изучения гораздо проще, чем фреймворк и нет особых ограничений cms. Может он автору подойдет? Но, т.к. у меня ноль опыта в современных фреймворках, то, возможно, я ошибаюсь и меня поправят )


    1. maxsharun Автор
      02.05.2019 16:41

      Я прекрасно знаю Modx, когда-то изучил Evo, потом Revo. Нет, этот продукт не подойдет. Вообще, я определился и с фреймворком и с архитектурой, и уже накидываю проект в процессе изучения. Я разделил Backend и Frontend по разным адресам. Определился с маршрутами, списком контроллеров. Сейчас отрабатываю в Laravel простые упражнения и вникаю во фреймворк. На стороне Frontend у меня Vue.js, но до фронтенда руки не дошли пока, т.к. мне нужно создать нормальный бекенд, дождаться ответа по документации API от одного из партнеров и т.п.


      1. maximw
        03.05.2019 13:45

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


  1. Skull
    02.05.2019 23:03
    +2

    Ностальгия! Это же улучшенная версия моего фреймворка 2010го года!

    Сдвиньте сроки на неделю и разберитесь с Laravel. Адекватному клиенту все можно объяснить. Хотя бы тем что самописное решение поддерживать никто не будет после вашего ухода


    1. maxsharun Автор
      03.05.2019 14:18
      +1

      Я так и сделал. А адекватный клиент — я сам ))) И сроки поджимают не просто так ))) Но спасибо сообществу. Это подстегнуло к очередному витку развития.