Показаны сообщения с ярлыком codeigniter. Показать все сообщения
Показаны сообщения с ярлыком codeigniter. Показать все сообщения

1 декабря 2025 г.

идеальная структура проекта на CodeIgniter 4.6 с разделением ответственности по слоям

 

✅ 1. CONTROLLER — только HTTP и передача данных

Задачи контроллера:

  • Принять запрос (GET/POST)

  • Создать DTO из запроса: RealEstateDTO::fromRequest($request)

  • Передать DTO в Service

  • Получить результат от Service

  • Передать данные в View

  • Никакой бизнес-логики, никаких where(), никаких запросов к модели

Контроллер — тонкий.


✅ 2. DTO — извлечение и валидация входных данных

Задачи DTO:

  • Прочитать входные данные из Request

  • Привести типы: string → int, пустое → null

  • Сформировать:

    • $filters

    • $sort

    • $pagination

    • $price_range

    • $city, $city_id

  • Создать эономические методы:

    • getFilters()

    • getSortOrders()

    • getPage()

    • getPerPage()

    • buildCanonicalUrl()

    • buildPriceRange()

DTO — фильтрация и нормализация данных + правила конвертации.
Никаких запросов к базе.


✅ 3. SERVICE — бизнес-логика

Задачи сервиса:

  • Принять DTO

  • Передать DTO → Filter → Repository

  • Выполнить бизнес-операции:

    • создание объекта

    • обновление объекта

    • сортировка

    • тумблеры (toggle)

    • привязка изображений

  • Конвертация DTO → entity → модель (insert/update)

Service — мозг приложения.


✅ 4. FILTER — подготовка query builder

Filter — это слой, который превращает DTO в SQL-запрос.

Задачи Filter:

  • Принять $dto->getFilters()

  • Применить:

    • where

    • like

    • between

    • orderBy

    • join

  • Поддержка:

    • $filter->where('city_id', 3)

    • $filter->orderBy('price','DESC')

    • $filter->paginate($page, $perPage)

Ничего не знает о Request, Service, Validation.

Filter — это SQL-конструктор.


✅ 5. MODEL — простая связь с конкретной таблицей

Задачи Model:

  • Точка входа в Query Builder

  • Описание таблицы

  • Soft deletes / timestamps

  • Методы:

    • getEntity($id)

    • isOwnedBy($id, $userId)

    • search()

  • Модель — это врата к базе, но не бизнес-логика.

Model — минимальная логика, только про таблицу.


✅ 6. REPOSITORY — доступ к данным

Repository — толстый слой для работы с базой.

Задачи Repository:

  • Выполнить Filter и Builder

  • Возвратить данные:

    • find

    • findAll

    • paginate

    • save/update

    • delete

  • Отвечает за работу со связями:

    • join cities

    • join users

    • eager loading (в будущем)

Repository — это слой, который заменяет работу с Model напрямую.

Слой Что делает Что не делает
Controller только request → DTO → service → view логика, SQL
DTO параметры, фильтры, сортировка, canonical SQL, бизнес-логика
Service операции над сущностями, вызывает Repository не обращается к Request
Filter строит SQL условие не знает о Request
Repository общение с Model и БД бизнес-правила
Model доступ к таблице, PK, timestamps бизнес-логика


11 февраля 2025 г.

CodeIgniter 3.1.13 и версии PHP: с чем он совместим?

CodeIgniter 3.1.13 – это последняя версия популярного PHP-фреймворка третьего поколения. Хотя CodeIgniter 4 уже давно вышел и активно развивается, третья версия остается востребованной благодаря своей простоте, стабильности и легкости в освоении. Однако, чтобы обеспечить бесперебойную работу проекта на CodeIgniter 3.1.13, важно понимать, с какими версиями PHP он совместим. В этой статье мы рассмотрим, какие версии PHP поддерживаются и какие могут возникнуть сложности при использовании более новых или старых версий.

7 февраля 2021 г.

Codeigniter 4 Query Builder работаем без Модели


CodeIgniter в проектах средней сложности очень ДАЖЕ можно. Логика проста:
Можно ли сделать одну модель на проект, если все запросы типичны , типа CRUD ?
или нужно туповастенько лепить на каждую таблицу отдельную модель ?
как с моего 15 летнего опыта, я отвечу , что можно иметь и одну модель на весь проект !
НО в CodeIgniter 4 такая модель УЖЕ есть!

30 августа 2020 г.

Как выбрать php фреймворк 2020. часть 1

В 2020 для улучшения качества кода, хорошей структуры проекта, и возможно

увеличение скорости разработки обязательно использовать PHP фреймворк.

Как выбрать PHP фреймворк?

Какой лучший  фреймворк  PHP в 2020 году ?

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


Мое знакомство с фреймворка началось примерное в 2008 году, и тогда, я выбирал между CakePHP,  CodeIgniter, Zend Framework.

Zend Framework мне показался сложным, а на CI и CakePHP. Я сделал несколько проектов. В CakePHP мне понравился принцип DRY – Don't repeat yourself – принцип призывает Вас не повторяться при написании кода. Т.е уже когда по урлу четко понимаешь, в какой контроллер идти и где у тебя находится view. В CI для этого приходилось писать несколько "лишних" строк типа return view('welcome_message'). немного не нравилось... хотя такое повеведение, можно было просто доработать и в CI, я его даже делал тогда, и предложил на одном форуме, но не всем этот принцип понравился.  Кроме того в CakePHP можно было в моделях делать связи типа МНОГИЕкоМНОГИМ и так далее, но это конечно приводило в более мендленной работе , но в некоторых случаях ускоряло разработку. После все плюсов и минусов тогда я сделал все таки выбор в пользу CI, хотя он был более "беден" по функционалу, но это легко исправлялось подключением дополнительных библиотек.


 

29 апреля 2019 г.

Создание сайта с использованием Codeigniter



Как опытный веб #программист для #создания #сайтов я использую CodeIgniter.
#CodeIgniter это популярный MVC фреймворк с открытым исходным кодом,
написанный на языке #программирования #PHP, для разработки полноценных веб-систем и создания #сайтов.
Хотя конечно можно создать #сайта на конструкторе или #CMS.
Они имеют более низкий порог вхождения, но конечно и #сайты на них можно сделать только очень простые.
Хотя уже есть очень продвинутые #CMS, например #WordPress.
Но и время для изучения WordPress уже нужно больше, как и время создания сайта займет больше времени.
Кстати дешевые программисты обходятся дорого: они делают медленно и не качественно.
После них код можно выбрасывать - никто еще доделывать или развивать не будет, так как они делаю "мусор" с самого начала.
При создании сайта, также важны #SEO оптимазация, и хорошие удобные решения для конечных пользователей (#юзабилити):
SEO-аудит и юзабилити-аудит

9 июня 2018 г.

Готовые проекты на CodeIgniter.

Несмотря на популярность других php фреймворков таких как Laravel и Symfony, я все еще использую CodeIgniter, так как он мне нравится, как опытному php программисту, и обеспечивает большую гибкость в написании проектов на PHP.

Здесь я буду собирать ссылки на актуальные готовые проекты на CodeIgniter.

1.    https://github.com/bkader/skeleton/
Готовый к использованию скелет CodeIgniter с множеством новых функций и совершенно новой концепцией hooks (actions and filters), а также готовыми к использованию  application-free темами и plugins.

Сайт Супер ай-ди ру сделан полность на CodeIgniter.
2.  https://github.com/ci-bonfire/Bonfire
    CodeIgniter 3.x включен.
     Очень гибкая система шаблонов / тем, способная к Wordpress-подобным родительским / дочерним темам.
     Использует Twitter Bootstrap для тем Admin и Default
     Полностью модульный и построенный вокруг HMVC
     4 контекста для вашего кода: контент, отчеты, настройки и инструменты разработчика
     Интерфейс резервного копирования и обслуживания базы данных
     Ролевое управление доступом
     Встроенные пользователи / система авторизации
     Code Builder с генерацией CRUD
     Простая система очереди электронной почты
     Двухступенчатый установщик
     Использует несколько конфигурационных файлов.
     Готов к миграции (с использованием команд необработанного SQL или Database Forge)
     Просмотр журнала / обслуживание

 

4 ноября 2013 г.

Не работают сессии Codeigniter

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

$this->session->userdata('var1'); 
$this->session->set_userdata(array('var1'=>'uchh')); 
$this->session->set_flashdata('var1', 'uchh'); 
$this->session->flashdata('var1'); 

проблема оказалась в том, что таблица ссесий была latin1_swedish_ci после того как изменил на utf8_general_ci сессии в Codeigniter наконец то заработали !!!!

кстати google поиск по Не работают сессии Codeigniter не дал нужной информации!

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

12 апреля 2011 г.

MyClientBase - скрипт для создания базы клиентов

MyClientBase - скрипт для создания базы клиентов на основе CI ( CodeIgniter 2.0.1 )
Скачать: http://www.myclientbase.com/
Информация по установке:

1.Залить все файлы на сервер;
2.Открыть в блокноте файл myclientbase/config/database.php и отредактировать переменные подключения к БД;
3. Запустить установку скрипта: http://www.your-server.com/subfolder/index.php/setup
4. Все, можно работать!

Хорошее готовое решение на основе CodeIgniter

13 октября 2010 г.

статистика реального использования пхп фреймворков

для анализа я взял сайт

http://php.opensourcecms.com

итак результаты

Zend Framework : 5 проектов
CodeIgniter : 2 проекта
CakePHP : 1 проект
Symfony : 2 проекта
Kohana : 0
Yii : 0

25 декабря 2009 г.

cake-like layout/view system for CodeIgniter

создание layout/view system в CodeIgniter похожей cakephp

я довольно долго использовал cakephp и мне нравиться DRY (Don't Repeat Yourself) , которая кстати есть и Ruby on Rails (RoR).

что то подобное я хотел бы иметь и в CodeIgniter. погуглив пару дней

2 декабря 2009 г.

CIEXtended

как бродя по просторам инетерен наткнуляся на сайт
CIEXtended (CIEX). так как я интересуюсь PHP фремворками вообще
а также CI (codeigniter) в частоности то так как я прочитал
что CIEXtended Framework да и еще базируется на CI решил скачать
последнюю версию (0.9.2) что при случае посмотреть.

24 мая 2009 г.

Обзор Open Source PHP Frameworks

В обзоре будут рассмотрены легкие CakePHP , CI , YII
и такие тяжеловесы как FLOW3 и Zend Framework

1.
CakePHP
довольно хороший PHP Framework похож на Ruby on Rails.
многое умеет, позволяет довольно быстро создавать даже
сложные приложения. Немного медленный, но на сайтах

стандартизированные форматы для обмена информацией о недвижимости

  Да, для обмена информацией о недвижимости существуют стандартизированные форматы , в основном XML и JSON, которые позволяют системам (порт...