​ Copyright 2021, codeigniter.com: a project of the CodeIgniter Foundation
​ Copyright 2021, codeigniter.com: a project of the CodeIgniter Foundation

Познакомиться с 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'е.

Возможно в репозитории слишком детально всё изложено, но это лишь с целью свести к минимуму время на развёртывание «рабочего примера» на локальном компьютере. В представленном на github репозитории в оcнове лежат XAMPP (windows), git bash. Во всяком случае всё развёртывалось и функционировало у автора данного скромного поста.

Есть ещё один полезный момент.

«Развёртывание» базы данных из репозитория «рабочего примера» реализовано не через SQL, как в документации, хотя дамп базы данных присутствует, а с использованием Database Migrations (миграций) и Database Seeding (семян). Именно того, что в том числе, делает надёжным production: сопровождение, масштабирование и etc. любого современного web-project'а командой из любого количества специалистов и разного уровня подготовки и опыта.

Реализация тестирования на PHPUnit для web-проекта любой сложности также представляется удобной и логичной, но это видимо требует отдельного «лёгкого репозитория» на github'е и отдельной статьи на Хабр . Конечно, при условии, что данные вопросы интересны инженерному сообществу, а не только автору.

Буду рад, если этот пост окажется для кого-то полезным.

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


  1. ainu
    25.07.2021 14:08
    +3

    На всякий случай спрашиваю.

    Нужно потратить вечер, выполняя инструкции из раздела «Build Your First Application» («Создайте свое первое приложение»). Поскольку документация написана хорошим, технически понятным языком, то в процессе ознакомления с этим и другими разделами возможно получить даже некоторое эстетическое удовольствие.

    Ощущение воздушности и состоятельности проекта CodeIgniter 4 будет присутствовать с вами теперь повсеместно. И Когда вы будете изучать (или уже изучили) другие платформы на PHP: Laravel , Symfony и т.п.

    Это сарказм?


    1. mSnus
      25.07.2021 14:50
      +1

      Вы что, никто не испытывали чувство состоятельности проекта, ещё на этапе выбора фреймворка? А выпавшие волосы, кстати, будут лёгкие и шелковистые.


      1. numbrCodeHbr Автор
        26.07.2021 22:11

        mSnus

        Благодарю за комментарий.

        Если под «проектом» понимать фреймворк, то у каждого проекта найдутся «за» и «против».

        Чтобы быстро всё «взвесить» и был собственно предложен репозиторий на GitHub.


    1. numbrCodeHbr Автор
      26.07.2021 22:00

      Благодарю за комментарий.


    1. numbrCodeHbr Автор
      26.07.2021 22:01

      Благодарю за комментарий.


    1. numbrCodeHbr Автор
      26.07.2021 22:02

      Благодарю за комментарий.


    1. numbrCodeHbr Автор
      26.07.2021 22:04

      ainu.

      Благодарю за комментарий.

      Это не сарказм и не ирония.

      Это впечатление от CodeIgniter4 , документация к которому (на момент написания этого комментария) доступна только на английском, поэтому может сложиться мнение, что проект не развивается.

      Но проект мощно развился со времён CodeIgniter3.

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


  1. 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


    1. numbrCodeHbr Автор
      26.07.2021 22:35

      rpsv

      Благодарю за комментарий.

      Вы правы :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'е. На каждое такое пояснение в статье присутствует соответствующая ссылка.


  1. mSnus
    25.07.2021 14:53

    CodeIgniter хорошо, когда надо написать простой CRUD и забыть о нём. Если что-то сложнее -- все равно ставить Laravel.


    1. gmtd
      25.07.2021 18:23

      Restful API со сложной бизнес логикой и трехэтажными запросами к БД отлично идёт на CI4

      С учетом того, что SPA нынче вполне себе стандарт в web приложениях, CI4 прекрасно подходит для полноценного бэкэнда

      Ну а его простота даёт ему скорость по сравнению с другими PHP фреймворками


      1. rpsv
        26.07.2021 08:51

        Ну а его простота даёт ему скорость по сравнению с другими PHP фреймворками

        Из-за простоты, или есть бенчмарки? Если простота = скорость (что в целом логично), то возьмите Slim для REST, он отлично справится, да к тому же еще проще и еще легче. Зачем в этой ситуации CI тогда?


        1. gmtd
          26.07.2021 17:53

          Бенчмарки есть. Разные. Большинство, конечно, аффилированных, так что лучше самому повыбирать, если интересно

          Slim, по сути, просто роутинг, а может понадобиться еще MVC, приблуды для Rest , а model CI4 данных вообще очень приятная и красивая штука для работы с БД.

          По закону 20/80 CI4 дает 80% нужного функционала за 20% "сложности" проекта


          1. rpsv
            26.07.2021 19:32
            +1

            model CI4 данных вообще очень приятная и красивая штука для работы с БД.

            Посмотрите Yii db , вообще с ума сойдете :D


            1. gmtd
              26.07.2021 20:47

              Вроде бы говорили о простых PHP фреймворках

              Не понимаю, как перескочили на Yii


              1. rpsv
                27.07.2021 07:59

                А когда Yii стал сложным? Ничего вам не мешает поднять на Yii REST API где будут контроллеры, AR и собственно все.

                У меня есть такое ощущение, что CI не дотягивает до "больших" дядек (Yii, Symfony, Laravel), но уже не такой "маленький" (Slim, Lumen, Silex), и поэтому вообще не понятно зачем он нужен.


      1. numbrCodeHbr Автор
        26.07.2021 22:42

        gmtd

        Благодарю за комментарии

        и за нужные слова в «освещении» CodeIgniter4.

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


    1. Fortop
      26.07.2021 17:49

      Если что-то сложнее -- все равно ставить Laravel

      Вы опечатались. Если что-то сложнее CRUD, то лучше не ставить Laravel


      1. mSnus
        26.07.2021 20:11

        Не для спора, а для интереса: почему?


        1. Fortop
          27.07.2021 21:05

          Слишком много магии и неявного поведения. В крупных системах это усложняет отладку и поддержку.

          Очень много статики и фасадов. Да, это ускоряет разработку, но имеет неприятную цену. Лучше без них.

          Ну, и, да - Eloquent отвратителен :D

          Если же от лары оставить только роуты, хелперы и прикрутить орм вида доктрины, то какие у него остаются преимущества перед микрофреймворками?

          В общем, несмотря на большой прогресс в самой ларе, она сильна экосистемой. И там все не очень хорошо.


      1. numbrCodeHbr Автор
        26.07.2021 22:55

        Fortop

        Благодарю за комментарий.

        Именно многое полезное из Laravel , Symfony, etc. взял «на вооружение» CodeIgniter4,

        сохранив присущие ему простоту, логичность и возможность расширяться благодаря механизмам composer.


        1. rpsv
          27.07.2021 08:03

          сохранив присущие ему простоту, логичность и возможность расширяться благодаря механизмам

          Дак любой проект, на любом фреймворке расширяем благодаря composer. Это вообще не заслуга CI.

          Именно многое полезное из Laravel , Symfony, etc. взял «на вооружение» CodeIgniter4,

          А можно уточнить что именно? После диагонального чтения доки, я только увидел класс Factory, который напоминает Laravel где за фасадом прячется (да я в курсе что это фабрика)


          1. numbrCodeHbr Автор
            28.07.2021 15:15

            rpsv:

            >А можно уточнить что именно?

            Как пример.
            CodeIgniter3 был всем хорош, но не использовал Composer и Command Line по разным объективным причинам (только, пжлста, не надо и тут что-то уточнять). Все задачи эффективно решались другими логичными для своего времени способами.
            Если вам действительно интересно можете прочитать, хотя бы «диагонально», CodeIgniter(3) User Guide. Возможно после прочтения вы тоже разделите симпатию профессионалов к CodeIgniter3 .

            В CodeIgniter4 есть и Composer Installation со всеми его возможностями расширения вашего проекта до любых «модульных высот» (привет Laravel'у ,  Symfony'и, etc.),
            а также Command Line Usage с, в том числе CLI Generators,

            т.е. одни из основных моментов, которые в своё время были выгодно представлены
            в Symfony, Laravel и, кстати, в Yii.

            Есть, конечно же, и другие «моменты». Но объём информации не предполагает формат комментария.


            1. rpsv
              29.07.2021 08:24

              Т.е. все сходство, это использование composer всеми перечисленными фреймворками? Ладушки