Познакомиться с PHP фреймворком CodeIgniter 4 достаточно просто.
Нужно потратить вечер, выполняя инструкции из раздела «Build Your First Application» («Создайте свое первое приложение»). Поскольку документация написана хорошим, технически понятным языком, то в процессе ознакомления с этим и другими разделами возможно получить даже некоторое эстетическое удовольствие.
Ощущение воздушности и состоятельности проекта CodeIgniter 4 будет присутствовать с вами теперь повсеместно. И Когда вы будете изучать (или уже изучили) другие платформы на PHP: Laravel , Symfony и т.п. Или на Python, как иногда в шутку, но со всем уважением, говорят язык одного фреймворка : Django .
Чем же привлекателен CodeIgniter 4 , именно 4 (последний на написание этого поста)?
В CodeIgniter 4 есть практически всё, что требуется при разработке современного web-проекта практически любой сложности. В достаточно компактной документации охватываются все направления современной web-разработки. Разделы, где это требуется, наполнены понятными примерами, даются объяснения как использовать "гибкость" заложенную во фреймворк изначально.
Возможно исходя из заботы о программистах, которые разработчики CodeIgniter 4 проявили в отношении специалистов, начинающих знакомиться с их проектом, всё изложено очень последовательно, логично и легко для понимания.
Но есть один момент, который возможно будет решён в CodeIgniter 5, нет возможности сразу получить целиком «рабочий пример» из «Installation» или «Command Line» (через php spark
) .
Неудобство отсутствия «рабочего примера» особенно сказывается тогда, когда возникает необходимость «освежить в памяти» всю специфику фреймворка CodeIgniter 4.
Столкнувшись «с таким моментом» несколько раз, подумалось, что будет полезно иметь под рукой «рабочий пример» «Build Your First Application» («Создайте свое первое приложение»), разместив его
Возможно в репозитории слишком детально всё изложено, но это лишь с целью свести к минимуму время на развёртывание «рабочего примера» на локальном компьютере. В представленном на github репозитории в оcнове лежат XAMPP (windows), git bash. Во всяком случае всё развёртывалось и функционировало у автора данного скромного поста.
Есть ещё один полезный момент.
«Развёртывание» базы данных из репозитория «рабочего примера» реализовано не через SQL, как в документации, хотя дамп базы данных присутствует, а с использованием Database Migrations (миграций) и Database Seeding (семян). Именно того, что в том числе, делает надёжным production: сопровождение, масштабирование и etc. любого современного web-project'а командой из любого количества специалистов и разного уровня подготовки и опыта.
Реализация тестирования на PHPUnit для web-проекта любой сложности также представляется удобной и логичной, но это видимо требует отдельного «лёгкого репозитория» на github'е и отдельной статьи на Хабр . Конечно, при условии, что данные вопросы интересны инженерному сообществу, а не только автору.
Буду рад, если этот пост окажется для кого-то полезным.
Комментарии (24)
rpsv
25.07.2021 14:20+1Поскольку документация написана хорошим, технически понятным языком, то в процессе ознакомления с этим и другими разделами возможно получить даже некоторое эстетическое удовольствие.
А у кого плохим? Как по мне любой популярный фреймворк (Yii, Symfony, Laravel, Zend) имеет хорошую и понятную документацию. Для Yii она еще и на русском по большей части. Чем CodeIgniter принципиально отличается своей документацией?
В CodeIgniter 4 есть практически всё, что требуется при разработке современного web-проекта практически любой сложности
А у кого нет? Миграции, Роутинг, DAO, ORM, MVC реализацию есть у всех фрейморков. У Yii например есть готовые докер файлы которые просто запускаются и работают. Есть serve сервер. Что есть у CI?
Но есть один момент, который возможно будет решён в CodeIgniter 5, нет возможности сразу получить целиком «рабочий пример» из «Installation» или «Command Line»
А вы точно пытались? Там вроде все просто (на примере CLI):
composer create-project codeigniter4/appstarter [name]
Далее создаете контроллер и запускаете его через:
php index.php [controller] [action]
В чем не "рабочесть" данного примера?
«Лёгкий пример» использования Database Migrations (миграций) и Seeding (посев)
Тема не раскрыта о слова совсем. Могли бы хотя бы заявленный функционал засунуть в статью, а то вникать в структуру CI если никогда с ней не работал - нет смысла, а для информации было бы интересно (наверное). Если конечно там что-то новое и отличающееся от документации: https://codeigniter.com/user_guide/dbmgmt/migration.html и https://codeigniter.com/user_guide/dbmgmt/seeds.html
numbrCodeHbr Автор
26.07.2021 22:35Благодарю за комментарий.
Вы правы :
composer create-project codeigniter4/appstarter [name]
Этот метод установки подойдет разработчику, который хочет начать новый проект на основе CodeIgniter4. (This installation technique would suit a developer who wishes to start a new CodeIgniter4 based project.) Раздел: «App Starter».
После этого и начинается новый проект «Build Your First Application» («Создайте свое первое приложение»).
Для быстроты получения конечного варианта, собственно, и был предложен вариант готового решения «First Application» в репозитории на GitHub.
Все необходимые пояснения даны в документации CodeIgniter4 и на GitHub'е. На каждое такое пояснение в статье присутствует соответствующая ссылка.
mSnus
25.07.2021 14:53CodeIgniter хорошо, когда надо написать простой CRUD и забыть о нём. Если что-то сложнее -- все равно ставить Laravel.
gmtd
25.07.2021 18:23Restful API со сложной бизнес логикой и трехэтажными запросами к БД отлично идёт на CI4
С учетом того, что SPA нынче вполне себе стандарт в web приложениях, CI4 прекрасно подходит для полноценного бэкэнда
Ну а его простота даёт ему скорость по сравнению с другими PHP фреймворками
rpsv
26.07.2021 08:51Ну а его простота даёт ему скорость по сравнению с другими PHP фреймворками
Из-за простоты, или есть бенчмарки? Если простота = скорость (что в целом логично), то возьмите Slim для REST, он отлично справится, да к тому же еще проще и еще легче. Зачем в этой ситуации CI тогда?
gmtd
26.07.2021 17:53Бенчмарки есть. Разные. Большинство, конечно, аффилированных, так что лучше самому повыбирать, если интересно
Slim, по сути, просто роутинг, а может понадобиться еще MVC, приблуды для Rest , а model CI4 данных вообще очень приятная и красивая штука для работы с БД.
По закону 20/80 CI4 дает 80% нужного функционала за 20% "сложности" проекта
rpsv
26.07.2021 19:32+1model CI4 данных вообще очень приятная и красивая штука для работы с БД.
Посмотрите Yii db , вообще с ума сойдете :D
gmtd
26.07.2021 20:47Вроде бы говорили о простых PHP фреймворках
Не понимаю, как перескочили на Yii
rpsv
27.07.2021 07:59А когда Yii стал сложным? Ничего вам не мешает поднять на Yii REST API где будут контроллеры, AR и собственно все.
У меня есть такое ощущение, что CI не дотягивает до "больших" дядек (Yii, Symfony, Laravel), но уже не такой "маленький" (Slim, Lumen, Silex), и поэтому вообще не понятно зачем он нужен.
numbrCodeHbr Автор
26.07.2021 22:42Благодарю за комментарии
и за нужные слова в «освещении» CodeIgniter4.
Слова, которые подразумевались, но высказаны были вами.
Fortop
26.07.2021 17:49Если что-то сложнее -- все равно ставить Laravel
Вы опечатались. Если что-то сложнее CRUD, то лучше не ставить Laravel
mSnus
26.07.2021 20:11Не для спора, а для интереса: почему?
Fortop
27.07.2021 21:05Слишком много магии и неявного поведения. В крупных системах это усложняет отладку и поддержку.
Очень много статики и фасадов. Да, это ускоряет разработку, но имеет неприятную цену. Лучше без них.
Ну, и, да - Eloquent отвратителен :D
Если же от лары оставить только роуты, хелперы и прикрутить орм вида доктрины, то какие у него остаются преимущества перед микрофреймворками?
В общем, несмотря на большой прогресс в самой ларе, она сильна экосистемой. И там все не очень хорошо.
numbrCodeHbr Автор
26.07.2021 22:55Благодарю за комментарий.
Именно многое полезное из Laravel , Symfony, etc. взял «на вооружение» CodeIgniter4,
сохранив присущие ему простоту, логичность и возможность расширяться благодаря механизмам composer.
rpsv
27.07.2021 08:03сохранив присущие ему простоту, логичность и возможность расширяться благодаря механизмам
Дак любой проект, на любом фреймворке расширяем благодаря composer. Это вообще не заслуга CI.
Именно многое полезное из Laravel , Symfony, etc. взял «на вооружение» CodeIgniter4,
А можно уточнить что именно? После диагонального чтения доки, я только увидел класс Factory, который напоминает Laravel где за фасадом прячется (да я в курсе что это фабрика)
numbrCodeHbr Автор
28.07.2021 15:15rpsv:
>А можно уточнить что именно?
Как пример.
CodeIgniter3 был всем хорош, но не использовал Composer и Command Line по разным объективным причинам (только, пжлста, не надо и тут что-то уточнять). Все задачи эффективно решались другими логичными для своего времени способами.
Если вам действительно интересно можете прочитать, хотя бы «диагонально», CodeIgniter(3) User Guide. Возможно после прочтения вы тоже разделите симпатию профессионалов к CodeIgniter3 .В CodeIgniter4 есть и Composer Installation со всеми его возможностями расширения вашего проекта до любых «модульных высот» (привет Laravel'у , Symfony'и, etc.),
а также Command Line Usage с, в том числе CLI Generators,т.е. одни из основных моментов, которые в своё время были выгодно представлены
в Symfony, Laravel и, кстати, в Yii.Есть, конечно же, и другие «моменты». Но объём информации не предполагает формат комментария.
rpsv
29.07.2021 08:24Т.е. все сходство, это использование composer всеми перечисленными фреймворками? Ладушки
ainu
На всякий случай спрашиваю.
Это сарказм?
mSnus
Вы что, никто не испытывали чувство состоятельности проекта, ещё на этапе выбора фреймворка? А выпавшие волосы, кстати, будут лёгкие и шелковистые.
numbrCodeHbr Автор
mSnus
Благодарю за комментарий.
Если под «проектом» понимать фреймворк, то у каждого проекта найдутся «за» и «против».
Чтобы быстро всё «взвесить» и был собственно предложен репозиторий на GitHub.
numbrCodeHbr Автор
Благодарю за комментарий.
numbrCodeHbr Автор
Благодарю за комментарий.
numbrCodeHbr Автор
Благодарю за комментарий.
numbrCodeHbr Автор
ainu.
Благодарю за комментарий.
Это не сарказм и не ирония.
Это впечатление от CodeIgniter4 , документация к которому (на момент написания этого комментария) доступна только на английском, поэтому может сложиться мнение, что проект не развивается.
Но проект мощно развился со времён CodeIgniter3.
Обратить внимание профессионалов к новой возможности решения задач web-разработки и было движущей силой в написании данного поста.