Якщо ви розробляєте сайти на PHP-фреймворках і ще не маєте своєї платформи, то напевно про неї думали. Це могли бути CMF, CMS, конструктор сайтів, набір компонентів — матеріал підходить для будь-якого з цих випадків. У статті поділюся радами і прикладами для тих, хто планує створити свій інструмент, або вже знаходиться на початку цього шляху.

Що потрібно знати при розробці своїх CMF і CMS. Досвід довжиною в 2 роки

Ми не буде говорити про розробку заради фана, вивчення нових технологій або дипломного проекту, якщо немає мети дати йому подальший розвиток. Ми поговоримо про розробку інструментів для комерційних проектів.

Читати далі →

Система складання фронтенда в CleverStyle Framework або чому вам може бути не потрібна кастомний

CleverStyle Framework всіляко допомагає розробнику не тільки на сервері, але і на фронтенде. Я про це згадував у попередніх статтях, але ніколи не вдавався в подробиці того, як саме все влаштовано під капотом.
Дана стаття буде зануренням в подробиці роботи зі статикою для фронтенда, починаючи від того, як визначаються файли потрібні на сторінці і закінчуючи оптимизациями доставки статики зразок HTTP/2 Server Push. Не забудемо і про те, чому з використанням CleverStyle Framework можна обійтися без кастомних системи складання і при бажанні інтегрувати таку систему складання процеси фреймворка.
Ця стаття спеціально випускає з уваги інтеграцію Bower/NPM і RequireJS, це буде тема окремої статті в недалекому майбутньому.
Читати далі →

Еволюція CleverStyle Framework 6

Нещодавно вийшов перший реліз гілки 6.x, а це значить, що крім відкинутою зворотної сумісності є і нововведення, про які хотілося б розповісти.
Попередні зміни: частина 1, частина 2, частина 3, частина 4, частина 5.
Загалом кожен новий реліз спрощує сам фреймворк, другорядні можливості видаляються (їх можна реалізувати без втручання в ядро фреймворку), з'являються нові, а ті що залишилися поліруються.
Так само все більш важливим стає дати розробникам можливість відмовитися від вбудованої функціональності, яка може призводити до накладних витрат. Це дозволяє прискорити розробку за рахунок відповідної вбудованої функціональності, але в той же час не нести неминучих накладних витрат за те, що не використовується.
Читати далі →

CRUD і пов'язані операції в CleverStyle Framework

Після статті з описом базових інтерфейсів для роботи з БД було достатньо коментарів з пропозицією більш високорівневих інструментів для роботи. У CleverStyle Framework є подібного роду інструменти у вигляді трейтов
cs\CRUD
та
cs\CRUD_helpers
. Разом вони дозволяють достатньо для типових ситуацій замінити велику простирадло шаблонного коду на один виклик функції. Про те, що це таке, і який набір завдань дозволяє вирішити і буде ця стаття.
Читати далі →

Робота з БД в CleverStyle Framework

На рахунок БД на перший погляд може здатися, що функціональність з коробки досить убога. Частково це правда, але компенсується тим, арсенал дуже добре продуманий, вирішує поставлені завдання і орієнтований на продуктивність.
А якщо вам потрібні більш функціональні інструменти — їх завжди можна встановити за смаком, це набагато простіше ніж випиляти складного вайлуватого монстра.
Ця стаття покаже основні інтерфейси, а трейты
cs\CRUD
та
cs\CRUD_helpers
залишаться на інший раз.
Читати далі →

Маршрутизація в CleverStyle Framework

Багато аспектів CleverStyle Framework мають альтернативну по відношенню до більшості інших фреймворків реалізацію тих же речей.

Дана стаття досить докладно описує пристрій роботи маршрутизації, приклади використання, а так само приклади того, як можна в цей механізм втрутитися, або, при бажанні, повністю його замінити його на власний.

Основна відмінність
Головна відмінність маршрутизації від реалізацій в популярних фреймворках типу Symfony, Laravel або Yii це декларативність замість імперативності.

Це означає, що замість того, щоб вказувати маршрути в певному форматі та зіставляти маршруту певний клас, метод або замикання, ми всього лише описуємо структуру маршрутів, і цієї структури достатньо для того, щоб зрозуміти який код буде виконаний в залежності від маршруту.

Подібний підхід конвенцій замість конфігурацій зручний у тому сенсі, що вимагає менше зусиль під час написання коду, і не вимагає перегляду конфігурації для того, щоб зрозуміти код, який буде викликаний при відкритті певної сторінки, так як це очевидно з угоди, прийнятого у фрейворке.

Читати далі →

Зміни в CleverStyle Framework 5

Деякий час тому вийшов перший реліз гілки 5.x, а потім кілька менших патч-версій, так що знову є чого розповісти.

Попередні зміни: частина 1, частина 2, частина 3, частина 4.

Коментарі під попередньою статтею і в чатиках були дуже корисними, окреме спасибі fesor, який хоч і не згоден, але надає конструктивну критику, яка має позитивні наслідки.

Безліч змін зробили систему швидше, легше і зручніше ніж коли-небудь до цього. У статті коротко про основні зміни, їх причини і наслідки.

Читати далі →

Реліз CleverStyle Framework 4

якось не виходило писати більше однієї статті від початку нової гілки (частина 1, частина 2, частина 3), але ось знову є чого цікавого розповісти, адже вийшов перший реліз серії 4.х.

Коротко про все

Перше, що хотілося б сказати — проект був перейменований з CleverStyle CMS в CleverStyle Framework. Нарешті! Більше не буде плутанини між назвою і змістом.

Якщо серія 2.х почалася з істотних змін на стороні сервера, а 3.х з порівнянних змін на клієнті, 4.х приносить поліпшення скрізь.

На сервері істотно збільшена швидкість роботи, при тому що це full-stack фреймворк, використовуючи HTTP сервер заснований на ReactPHP можна отримати швидкість генерації сторінки НИЖЧЕ 1мс, швидше стала генерація HTML в типових сценаріях.
Так само додалася зручна підтримка вкладених структур у файлах перекладів, додалася підтримка SQLite, PostgreSQL, підтримка роботи в якості PSR7 Middleware (ініціалізація з PSR7-сумісного request об'єкта і видача результату в PSR7-сумісний response об'єкт) і пов'язані з цим зручні абстракції в самому ядрі.

На фронтенде повсюдно використовується RequireJS, ряд бібліотек, безумовно що завантажуються на фронтенде, тепер завантажуються тільки коли безпосередньо потрібно, додані оптимізації для швидкого відтворення першого кадру (first paint).

На стику backend та frontend оптимізації побудови кешу статики (CSS/JS/HTML), HTTP/2 Server push,
Link: <preload>
та багато іншого.

В цілому система виглядає як хороший гібридний (не чисто микроядерный, але і не жирний такий) full-stack php фреймворк.

Як завжди, не обійшлося без поліпшення метрик коду, наприклад, оцінки Scrutinizer:)

Читати далі →

Зібрати найкраще з двох світів - фреймворків та CMS (частина 2)

Попередня стаття зібрала досить багато, часом досить різких, коментарів, друга частина розповість про зміни які відбулися протягом наступних 4-х місяців і по можливості не буде повторювати першу частину, яка все ще вельми актуальна.

Читати далі →

Атомний реактор в кожен сайт

Всі чули про те, що PHP створений, щоб вмирати. Так от, це не зовсім правда. Якщо захотіти — PHP може не вмирати, працювати асинхронно, і навіть підтримує чесну багатопоточність. Але не всі відразу, в цей раз поговоримо про те, як зробити щоб він жив довго, і допоможе нам у цьому атомний реактор!



Читати далі →