Loading...
PHP, MySQL | Создание универсального стартер-кита для PHP-проек
Начал писать документацию, коряво но думаю современной подправке, если хотите можете помочь, могу 1 человека в качестве копирайтера. А может быть и у соучредителя "StartKit".

https://livecms.online/
wearnings (4 дек 2024, в 22:19)
Something , Не знаю, но думаю прийти выучить код! Для этого смотрите скрин, я думаю так расписать все функции, как думаешь норм?
Норм.
Только стандартные константы php не надо туда кидать, расписывай свои, а лучше сначала релиз выкати (движок соцки), а потом уже описывай, а то описание есть, а движка нет).
Название LiveCMS уже занято, лучше оригинальное придумать, а то народ будет гуглить "livecms", а попадать на гитхаб другой цмс)
wearnings (3 дек 2024, в 13:33)
Привет, ребята!

Мне нужна ваша помощь в создании универсального стартер-кита для PHP. Идея в том, чтобы разработать базовый фреймворк или платформу, которая подойдет для реализации любого проекта, будь то сайт, админка или API. Основной упор — удобство и независимость: каждый сможет легко дописать или настроить что-то под себя, собрать нужный функционал из готовых классов и функций.

Хочется, чтобы это было чем-то вроде конструктора:

Пользователь сам выбирает, какие модули подключить.
Не нужно быть привязанным к конкретным библиотекам, но возможность их использовать сохраняется.
Всё уже адаптировано под базовый дизайн, но его легко заменить или модифицировать.

Что мне нужно:
Подсказки по структуре ядра:
- Какие папки и файлы должны быть в стартер-ките?
- Как лучше организовать автозагрузку, маршрутизацию, инициализацию модулей и работу с конфигурацией?

Функционал ядра:
- Какие общие функции точно нужны (например, работа с конфигурацией, редиректы, работа с файлами и т.д.)?
- Какие классы вы считаете базовыми (например, для работы с базой данных, маршрутизацией, авторизацией)?

Гибкость:
- Как обеспечить возможность добавления новых модулей и функционала без изменения ядра?
- Как минимизировать зависимости, чтобы проекты могли работать без Composer, но при необходимости использовать сторонние библиотеки?

Работа с шаблонами:
- Стоит ли внедрять шаблонизатор по умолчанию или оставить работу с шаблонами максимально простой?

Работа с данными:
- Какие инструменты для работы с базами данных и API лучше включить в стартер-кит?
Ваши идеи:

Возможно, у вас есть мысли о том, как улучшить процесс разработки на PHP, чтобы стартер-кит подходил для реальных задач.

Примерная структура, которую я наметил:

framework/ — ядро (функции, автозагрузка, конфигурация, маршрутизация).
modules/ — модули (например, авторизация, работа с пользователями, блоги).
themes/ — базовые шаблоны.
storage/ — кеш, логи, временные файлы.

Я хочу, чтобы стартер-кит был удобным и подходил как для новичков, так и для опытных разработчиков. Буду рад любым советам, идеям, кодовым примерам или обсуждению.

Заранее спасибо за помощь! 🙌

https://github.com/lifesheets/php-startkit
Удачи в работе*friends*
Something , я пока думаю как организовать, структуру веди правельно нужно со старта сделать, чтоби потом не переделивать глобально. А так спасибо за подказку. Как думаешь базовий дизайн если взять твинго норм будет или всеже сделать базовую струтуру ?

По поводу констант

define('PHP_SELF', _filter($_SERVER['PHP_SELF']));
define('HTTP_HOST', _filter($_SERVER['HTTP_HOST'] ?? ''));
define('SERVER_NAME', _filter($_SERVER['SERVER_NAME'] ?? ''));
define('HTTP_REFERER', _filter($_SERVER['HTTP_REFERER'] ?? 'none'));
define('BROWSER', _filter($_SERVER['HTTP_USER_AGENT'] ?? 'none'));
define('IP', _filter(filter_var($_SERVER['REMOTE_ADDR'] ?? '', FILTER_VALIDATE_IP) ?? ''));

Я немного названия их позаимствовал, и сделал так как нужно.
________
посл. ред. 05.12.2024 в 12:47; всего 2 раз(а); by wearnings
184140516 , спасибо
wearnings (5 дек 2024, в 12:39)
Something , я пока думаю как организовать, структуру веди правельно нужно со старта сделать, чтоби потом не переделивать глобально. А так спасибо за подказку. Как думаешь базовий дизайн если взять твинго норм будет или всеже сделать базовую струтуру ?

По поводу констант

define('PHP_SELF', _filter($_SERVER['PHP_SELF']));
define('HTTP_HOST', _filter($_SERVER['HTTP_HOST'] ?? ''));
define('SERVER_NAME', _filter($_SERVER['SERVER_NAME'] ?? ''));
define('HTTP_REFERER', _filter($_SERVER['HTTP_REFERER'] ?? 'none'));
define('BROWSER', _filter($_SERVER['HTTP_USER_AGENT'] ?? 'none'));
define('IP', _filter(filter_var($_SERVER['REMOTE_ADDR'] ?? '', FILTER_VALIDATE_IP) ?? ''));

Я немного названия их позаимствовал, и сделал так как нужно.
Шаблонизатор? Боже, только не это. Делай html вперемешку с php, без левых библиотек, как во всех нормальных цмс, и не слушай местных индусов, а то если будешь копаться во всякой говне, то никогда цмс не напишешь)
Something , ну ладно, конечно не шаблонизатор это ну и ладно! А по поводу шаблонизатора, подождать не нужно сделать этого типа, я вот думаю, как улучшить учту все ваши мысли. Есть совети?

# **system** - Основна система та ядро додатка
Тут розміщені базові компоненти, що забезпечують роботу всього проєкту.

- **/functions**: Глобальні функції, які використовуються у всьому проєкті.
- **/config**: Файли конфігурації (база даних, налаштування шляхів тощо).
- **/classes**: Системні класи та файли.

---

# **modules** - Модулі для реалізації функціоналу
Кожен модуль відповідає за конкретну задачу або розділ додатка.

### **Кожен модуль у своїй папці:** `modules/module_name`
- **controllers**: Контролери модуля.
- **models**: Моделі, які використовуються модулем.
- **views**: Уявлення для модуля.

### **Приклади модулів:**
- **modules/blog** — модуль для блогу.
- **modules/shop** — модуль для інтернет-магазину.

---

# **plugins** - Сторонні або додаткові плагіни
Плагіни розширюють функціональність системи.

### **Кожен плагін у своїй папці:** `plugins/plugin_name`
- **assets**: CSS, JS, зображення для плагіна.
- **code**: Логіка плагіна (PHP-код, функції).

### **Приклад:**
- **plugins/seo** — плагін для SEO-оптимізації.

---

# **themes** - Шаблони оформлення та стилізація інтерфейсу
Дозволяють легко змінювати зовнішній вигляд додатка.

### **Кожен шаблон у своїй папці:** `themes/theme_name`
- **assets**: CSS, JS, зображення, шрифти для теми.
- **layouts**: Основні макети (наприклад, `header`, `footer`, `sidebar`).
- **views**: Шаблони сторінок, які підключаються через контролери.

### **Приклад:**
- **themes/default** — стандартна тема.
- **themes/custom** — кастомна тема.

---

# **Переваги цієї структури**

### **Чітке розділення обов'язків**
- Ядро додатка (`livecms`) відокремлене від модулів, плагінів та шаблонів.
- Легко вносити зміни та розширювати функціонал.

### **Підтримка модульності**
- Кожен модуль можна розробляти та тестувати незалежно.

### **Простота оновлення**
- Можна оновлювати ядро (`livecms`) або замінювати модулі/теми без ризику пошкодити всю систему.

### **Підтримка плагінів**
- Легко додавати нові плагіни для розширення функціоналу.

### **Гнучкість у темізації**
- Можна створити декілька тем та перемикатися між ними.

---

# **Рекомендації для покращення**
1. **README.md у кожній папці**
Додайте файл `README.md` у кожну папку, щоб описати її призначення.

2. **Автозавантаження**
Використовуйте автозавантаження для всіх компонентів (наприклад, PSR-4 для класів модулів, плагінів та ядра).

3. **Багатомовність**
Якщо система підтримує багатомовність, додайте папку `livecms/lang` для мовних файлів.


######################################## Папка livecms/functions

# functions
Ця папка містить глобальні функції, які використовуються у всьому проєкті.

## Призначення:
- Забезпечення доступу до загальних функцій.
- Уникнення дублювання коду.

### Приклад:
Файл `helpers.php` — містить функції для роботи з рядками, масивами тощо.

######################################## livecms/config

# config
Ця папка містить файли конфігурації додатка.

## Призначення:
- Зберігання налаштувань бази даних, шляхів, API-ключів тощо.

### Приклад:
Файл `database.php` — параметри підключення до бази даних.

######################################## livecms/classes
# classes
Ця папка містить системні класи для роботи ядра.

## Призначення:
- Логіка для забезпечення роботи базових функцій проєкту.

### Приклад:
Клас `DB.php` — обробка запитів до бази даних.

######################################## modules/module_name
# module_name
Ця папка містить компоненти модуля `module_name`.

## Структура:
- **controllers**: Логіка обробки запитів.
- **models**: Робота з даними.
- **views**: Відображення інформації для користувача.

### Приклад:
Модуль `blog` для управління статтями.


######################################## plugins/plugin_name
# plugin_name
Ця папка містить код плагіна `plugin_name`.

## Структура:
- **assets**: Статичні файли (CSS, JS, зображення).
- **code**: Логіка плагіна.

### Приклад:
Плагін `seo` для оптимізації контенту.

######################################## themes/theme_name
# theme_name
Ця папка містить файли оформлення теми `theme_name`.

## Структура:
- **assets**: CSS, JS, шрифти.
- **layouts**: Основні макети сторінок (header, footer).
- **views**: Шаблони сторінок.

### Приклад:
Тема `default` для базового дизайну.
ВСЕ что я напимал више, взял с етой тем, склал ТЗ, возможно что-то изменить нужно?
Вот репозиторий тестовий
https://github.com/lifesheets/sandbox
Где тести провожу
________
посл. ред. 06.12.2024 в 06:57; всего 1 раз(а); by wearnings
Тоже занимался такой фигней. Бесполезная трата времени, когда подобные стартер киты ужа давно написаны на всех языках, оптимизированы и протестированы.
Если прям хочется покопаться на низком уровне - как говорили выше, возьми опен сорс модули из какого нибудь laravel и сооруди из них свой "уникальный" проект.
А всяких велосипедостроителей не слушай. Они полжизни тратят на написание того что уже написано. А остальное время тратят на оптимизацию и исправление багов. И в лучшем случае у них получается средне.
В итоге они потратили свое время (деньги клиента) и ничего полезного не сделали
________
посл. ред. 05.12.2024 в 23:44; всего 2 раз(а); by Dark_AKC
Онлайн: 5
Время:
Gen. 0.1088
(c) ByMAS.RU 2010-2025