Comments 86
Кроме того в указанных фреймворках не так много бибилиотек, которые в своём проекте я буду использовать, как есть.
Используйте Lumen и добавляйте нужный Вам функционал, но городить еще что-то… Пожалейте того, кто будет сопровождать код. Ему же придется под Ваш стандарт переучиваться, вникать.
Ваш код не смотрел, но справедливости ради стоит отметить, что тот же ларавел позволяет сделать с собой ± что угодно. Перенастрайте конфиги под свои нужды, переопределяйте реализации. В случае минимальных нужд, как выше отметили, берите люмен и надстраивайте что хотите.
А разбираться с вашим велосипедом, который может оказаться далеко не тортом, для поддержки или, не дай всевышний, расширения проекта… Ну я попадал на такое. И тратил кучу времени на переписывание с нуля.
Слишком много магии в этом фреймворке о которой просто нужно знать.
Ну и как по мне: Yii, Symfony напорядок удобней в использовании.
Если нет времени возможно стоило взглянуть в сторону готовых CMS?
Я бы вам таки очень посоветовала обсудить необходимое с более опытным разработчиком/ами. Есть очень больше подозрения что нестандартность решения вызвана слабым знакомством со стандартными
2) Да, подходит именно PHP по нескольким причинам: скорость разработки; часть функционала уже даже готова (на PHP). Остальные варианты (Python) тоже здорово, но это будет дольше (потому что мне нужно собрать денег на спеца и оторвать его от текущей своей работы), дороже и не факт, что проект выстрелит (простая статистика — часть проектов не работает).
Я за свои не долгие 2-3 года повидал не мало, разного качества, кода и, с сожалением вам сообщаю, вы пишите очень плохой велосипед, даже не с квадратными, а с треугольными колесами.
Во-первых,
Большого опыта в программировании не было.и
В общем я решил написать свой микрофреймворк и создавать проект на нем.уже из коробки дают критическую проблему для вашего руководства, которое поручило разработку.
Во-вторых, отсутствие стандартов которые уже приняты в сообществе (Composer и PSR о которых уже упомянули ранее).
В-третьих, отсутствует покрытие тестами хоть чего-либо.
Дальше просто перечислю…
— отсутствуют нэймспэйсы
— автолоадер вы не поняли
— mysqli вместо pdo
— Database полон sql инъекций
— mvc который не mvc
В общем… Там очень много мест которые надо переписывать с нуля, даже если задаваться целью написания собственного фрэймворка. Одно я точно могу вам посоветовать уже сейчас, найдите время и деньги пройти курсы php разработки.
Поднимите уровень базовых знаний, а потом научитесь применять готовые библиотеки и собирать из них свои решения.
Для своего первого проекта выбрал таки YII. Написал работающее приложение. YII показался мне удобным по причине легкого входа для новичков. Тем что там из коробки есть генератор шаблонов — gii, много интерфейсных элементов (списки, таблиц и прочее). Новый проект пишу на laravel. Он мне кажется чуть сложнее, но вспоминая как это реализовывалось в YII становится проще писать.
Мой проект тоже по ТЗ и CMS мне ну никак не подойдет, но писать свой фреймворк я не хотел и не хочу, ибо зачем… есть уже годами «вылизанное» средство разработки. Он позволяет быстро и качественно разрабатывать… есть много расширений/дополнений/практик.
ЕдинственнLaravelочу сделать в своих проектах дак это DDD, которого нет в Laravel и в YII. Но мне пока до этого далеко.
Если примите мой совет он будет такой:
— курсы по PHP действительно не будут лишними (пусть даже бесплатные)
— возьмите Laravel :)
Каждый уважающий себя пхп программист должен написать пхп фейерверк с нуля, после ему открывается третий глаз, который открывает истину: все уже придумано до нас.
Отметили простоту и незамысловатость
Простота первого чтения — может быть, правда причина тут в том что у вас кода мало.
А как же простота поддержки, расширения, тестирования
И эта статья со всеми комментариями полезна тем, кто в такой же ситуации, что и я.
Эта статья про: не смог в фреймворки, напишу свой. Ваш проект — пример того как не надо делать
Я спросил их честное мнение (они не знакомы друг с другом). Отметили простоту и незамысловатость, а также удобство для использования на мелких проектах, где есть какой-то нестандартный функционал.
Значит это либо очень стеснительные разработчики, либо не очень квалифицированные. Потому что даже "знание фреймворка" не показатель, потому что зачастую оно лишь своится к умению наколбасить контроллеры модели и вьюшки по документации
Удивительно, почему рудименты типа CI настолько живучие.
Немного посмотрел код, спасать там буквально нечего. Посмотрите symfony, psr, composer, mvc
Парадокс в том, что вот эти всяки композеры с пср-ами ускоряют работу, а не замедляют.
Прежде, чем начать писать следующую версию своего фреймворка, попробуйте ознакомится с серией уроков Дмитрия Елисеева: в них подробно объясняется не только как устроены современные феймворки, но и почему они устроены именно так.
И попробуйте использовать в работе нормальную IDE с функцией форматирования кода — хотя бы для того, чтобы привести размещение фигурных скобок к единообразному виду и избавится от лишних пустых строк.
Если вы хотите развиваться как разработчик, это упомянутая серия уроков вам обязательна к просмотру (более того, вы с первого раза не поймете все, придется возвращаться и пересматривать).
Если вы предприниматель и разработка идет от «денег нет, я сам смогу», то лучший выбор это Laravel/Lumen.
Он не так сложен, есть куча инфы и уроков. Также относительно много дешевых разработчиков на поддержку и развитие (порог входа ниже).
На избыточность функционала не обращайте внимание, загружаются только те файлы, которые нужны для работы конкретной страницы.
Очень частая ошибка новичка, не осилив разобраться с проверенными временем и опытом больших коммьюнити решениями, куда проще наваять свой простой и понятный велосипед… и не важно, что не покрытый тестами, о которых никто не слышал, без миграций который тоже никогда не применялись и само собой из паттернов знаком в лучшем случае синглтон… Посмотрела предыдущую публикацию… и произошедшее кажется вполне логичным, у вас очень слабый опыт разработки. Знаний php, mySql и умения развернуть и поправить модуль Wp это даже еще на уровень джуниора не тянет. Хотя знакомство с git — уже хорошо. В общем вам сюда http://phptherightway.ru/
И обязательно обзавестись нормальной IDE, судя по тому что лежит на гитхабе писалось все в каком-то блокноте
В общем вам сюда phptherightway.ru
У вас ссылка поломатая
Если вы только начинаете работу с PHP, убедитесь в том, что вы используете текущую стабильную версию PHP 5.5
на гитхабе вроде обновляют перевод getjump.github.io/ru-php-the-right-way
если на ларавел, то очень рекомендую незажмотить 9$ на laracast и, прежде чем начать, сначала поизучать туториалы на нем. А если с английским совсем беда то посмотреть интенсив от Дмитрия Елисеева https://elisdn.ru/blog/117/laravel-master-class (ну и паралелльно подтягивать английский)
Вы рассуждаете как программист. Я же начал программировать, потому что нужно было развивать свой бизнес, а денег на найм специалиста не было
При этом в прошлой статье вы упоминали, что брались за разработку сайта для другого человека на коммерческой основе.
Именно из за таких представителей PHP разработчиков, язык и не любят. Такое стыдно даже кому либо показывать, куда хабр скатился.
Если вы рассуждает как предприниматель, у вас ограниченные сроки и ресурсы, вам нужно тонкое и изящное решение и вы решили писать свой фреймворк то вы явно делаете что то не так. При этом вы сами же пишете что выучить laravel вам не сложно (что тоже вызывает вопросы).
то есть по вашему выходит, что у вас абсолютно нет денег на найм специалиста, а проект настолько нестандартный что необходимо писать с нуля? Насколько вы уверены в его нестандартности, и то что решения на opencart/magenta с кучами различных плагинов его не покрывают? Если речь о продажах — то надо полагать это что-то магазинное.
Ну хотя бы на тостер обращайтесь за помощью, И не храните деньги в float
Большого опыта в программировании не было.
В общем я решил написать свой микрофреймворк и создавать проект на нем.
И я решил, что мой фреймворк недостаточен.
Так все делают в начале, но не все статьи пишут. Почему? Потому что ничего полезного :)
Причины были такие:
- с фреймворками раньше не работал
- раньше работал только с cms, а они вообще не гибкие и для нестандартного проекта создают проблем больше чем решают
- на работе была большая команда, но использовали самописный фреймворк, да ещё и на php 4
- фреймворки были сложные и медленные. документации на русском не было, либо была устаревшая
- zend framework требовал как минимум php5, а многие сидели на php4
- в моём окружении (коллеги с работы) мало кто использовал фреймворки (либо только свой код, либо cms) и казалось, что они не нужны
- не работал с ООП
- работа вытягивала все силы и в свободное от неё время я играл в игры и смотрел сериалы
- не было никакого стимула развиваться, по тому что на работе хорошо платили и мало требовали
- свой проект начинался с пары страниц и казалось, что фрейморк для него — оверхед
Пока писал свой фреймворк возникало очень много сложных вопросов, поэтому постоянно приходилось подглядывать реализацию у zend framework. Когда с ним более менее разобрался, то сменил работу на ZF.
Спустя какое-то время познакомился в свободное от работы время с Yii. Следующая работа была на нём.
Если бы в свободное от работы время ничего не изучал, то сейчас бы до сих пор работал на первой работе-болоте, как некоторые мои коллеги уже более 10 лет. При этом laravel до сих пор не осилил (хотя я себя успокаиваю, что он мне просто не нравится). Количество вакансий на laravel/symfony пугающе обгоняет такие на yii и через пару лет можно реально остаться с очень узким выбором вакансий. Опять же пока не хватает мотивации и свободного времени. Есть ещё куча всего интересного на что оно уходит: devops, машинное обучение, смарт-контракты, nodejs, новые базы данных (influxdb, clickhouse), написание статей на хабр опять же и т.д. и т.п.
Да, часть проектов была написана на этих своих поделках, но каждый следующий велосипед смотрел на предыдущий, как на… ну вы сами понимаете. Просто поглядите на свой код пятилетней давности.
В итоге, я перешёл на взрослые фреймворки, начиная с Kohana, и дальше пробовл и пробовал… Zend, YII1,2, немного Laravel, не обошлось и без микро-фреймворков (тот же Slim)…
Одно точно — для обучения это безусловно хорошо. Но лучше для хобби-проектов и не в продакшин. А если планируется командная работа, то лучше выбрать из имеющихся и проверенных решений. Это по-взрослому.
Кроме того, там и правда уже решены многие задачи, как то кэширование, crud, авторизация и структура приложения. Да, в конце концов, куча примеров разных приложений и модулей на GitHub. Можно смотреть в чужой код, чтобы понять, воспользоваться или взять на заметку.
1. Code style — PSR-2 и только. Самый важный пункт как я считаю. Ваш текущий код невозможно читать
2. ООП. Namespace, имена классов. В PHP обычно используется CamelCase
3. MVC у вас в целом реализован, но на троечку мягко говоря. В шаблон например нельзя передать данные :)
4. Структура файлов очень плохая. Задумайтесь. Есть общемировые практики, следовать бездумно которым не стоит разумеется, но учитывать нужно обязательно.
Сама идея делать свой MVC фреймворк — отличная. Но делать реальные проекты на нем — скорее ужасная. Если вы откажетесь от проекта, то следующему проще будет переписать проект с нуля, чем понимать что делает ваш фреймворк :) Тем не менее, современные фреймворки весьма сложные в понимании, что и как работает, они слабо подходят для изучения. С ними можно работать не понимания что под капотом, но это ведет к другим проблемам, поэтому сделать свой фреймворк «по фану» — рекомендую :) Я недавно делал одно тестовое, несмотря на то, что я считаю его просто MVC каркасом, могу порекомендовать вам разобрать каждую строчку github.com/arku31/mvc_blog
Несмотря на то то, что оно незаконченное (был лимит по времени), не имеет тестов и имеет некоторые проблемы — это будет очень полезно для вас, т.к. это чистый php (такое было требование) и каждая строка написана руками и с определенной целью.
Обратите внимание на работу с шаблонами, моделями, сессиями, request/response. Это тот минимум, который требуется в минимальном понимании что такое фреймворк :)
Ваш фв не далеко ушёл от фв тс, самое главное в композере, это избавление от кучи инклюдов и автолоадеров, которые руками надо писать
т.к. это чистый php (такое было требование)
оно незаконченное (был лимит по времени)
Загляните по ссылке, там черным по белому, в readme, написано что composer было нельзя использовать. Еще хочу заметить, я не позиционирую ЭТО как некое «фв» и не предлагаю его использовать даже в домашних проектах :)
P.S. Не видите разницы между этими двумя «проектами»? У меня для вас плохие новости :)
Сдвиньте сроки на неделю и разберитесь с Laravel. Адекватному клиенту все можно объяснить. Хотя бы тем что самописное решение поддерживать никто не будет после вашего ухода
По поводу psr. Стандарты форматировать правильно код psr1 psr2 вроде как есть более новый psr12 вроде, типо 1+2. psr4 автозагрузка, вытекает полностью в composer. Этого для начала хватит. Композер сокращает количество инклюдов до одного
Зачем оказался нужен ещё один PHP фреймворк?