PHP, MySQL | Создание универсального стартер-кита для PHP-проек
Начал писать документацию, коряво но думаю современной подправке, если хотите можете помочь, могу 1 человека в качестве копирайтера. А может быть и у соучредителя "StartKit".
https://livecms.online/
https://livecms.online/
wearnings (4 дек 2024, в 22:19)
Something , Не знаю, но думаю прийти выучить код! Для этого смотрите скрин, я думаю так расписать все функции, как думаешь норм?
Норм.Something , Не знаю, но думаю прийти выучить код! Для этого смотрите скрин, я думаю так расписать все функции, как думаешь норм?
Только стандартные константы php не надо туда кидать, расписывай свои, а лучше сначала релиз выкати (движок соцки), а потом уже описывай, а то описание есть, а движка нет).
Название LiveCMS уже занято, лучше оригинальное придумать, а то народ будет гуглить "livecms", а попадать на гитхаб другой цмс)
wearnings (3 дек 2024, в 13:33)
Привет, ребята!
Мне нужна ваша помощь в создании универсального стартер-кита для PHP. Идея в том, чтобы разработать базовый фреймворк или платформу, которая подойдет для реализации любого проекта, будь то сайт, админка или API. Основной упор — удобство и независимость: каждый сможет легко дописать или настроить что-то под себя, собрать нужный функционал из готовых классов и функций.
Хочется, чтобы это было чем-то вроде конструктора:
Пользователь сам выбирает, какие модули подключить.
Не нужно быть привязанным к конкретным библиотекам, но возможность их использовать сохраняется.
Всё уже адаптировано под базовый дизайн, но его легко заменить или модифицировать.
Что мне нужно:
Подсказки по структуре ядра:
- Какие папки и файлы должны быть в стартер-ките?
- Как лучше организовать автозагрузку, маршрутизацию, инициализацию модулей и работу с конфигурацией?
Функционал ядра:
- Какие общие функции точно нужны (например, работа с конфигурацией, редиректы, работа с файлами и т.д.)?
- Какие классы вы считаете базовыми (например, для работы с базой данных, маршрутизацией, авторизацией)?
Гибкость:
- Как обеспечить возможность добавления новых модулей и функционала без изменения ядра?
- Как минимизировать зависимости, чтобы проекты могли работать без Composer, но при необходимости использовать сторонние библиотеки?
Работа с шаблонами:
- Стоит ли внедрять шаблонизатор по умолчанию или оставить работу с шаблонами максимально простой?
Работа с данными:
- Какие инструменты для работы с базами данных и API лучше включить в стартер-кит?
Ваши идеи:
Возможно, у вас есть мысли о том, как улучшить процесс разработки на PHP, чтобы стартер-кит подходил для реальных задач.
Примерная структура, которую я наметил:
framework/ — ядро (функции, автозагрузка, конфигурация, маршрутизация).
modules/ — модули (например, авторизация, работа с пользователями, блоги).
themes/ — базовые шаблоны.
storage/ — кеш, логи, временные файлы.
Я хочу, чтобы стартер-кит был удобным и подходил как для новичков, так и для опытных разработчиков. Буду рад любым советам, идеям, кодовым примерам или обсуждению.
Заранее спасибо за помощь! 🙌
https://github.com/lifesheets/php-startkit
Удачи в работе
Привет, ребята!
Мне нужна ваша помощь в создании универсального стартер-кита для PHP. Идея в том, чтобы разработать базовый фреймворк или платформу, которая подойдет для реализации любого проекта, будь то сайт, админка или API. Основной упор — удобство и независимость: каждый сможет легко дописать или настроить что-то под себя, собрать нужный функционал из готовых классов и функций.
Хочется, чтобы это было чем-то вроде конструктора:
Пользователь сам выбирает, какие модули подключить.
Не нужно быть привязанным к конкретным библиотекам, но возможность их использовать сохраняется.
Всё уже адаптировано под базовый дизайн, но его легко заменить или модифицировать.
Что мне нужно:
Подсказки по структуре ядра:
- Какие папки и файлы должны быть в стартер-ките?
- Как лучше организовать автозагрузку, маршрутизацию, инициализацию модулей и работу с конфигурацией?
Функционал ядра:
- Какие общие функции точно нужны (например, работа с конфигурацией, редиректы, работа с файлами и т.д.)?
- Какие классы вы считаете базовыми (например, для работы с базой данных, маршрутизацией, авторизацией)?
Гибкость:
- Как обеспечить возможность добавления новых модулей и функционала без изменения ядра?
- Как минимизировать зависимости, чтобы проекты могли работать без Composer, но при необходимости использовать сторонние библиотеки?
Работа с шаблонами:
- Стоит ли внедрять шаблонизатор по умолчанию или оставить работу с шаблонами максимально простой?
Работа с данными:
- Какие инструменты для работы с базами данных и API лучше включить в стартер-кит?
Ваши идеи:
Возможно, у вас есть мысли о том, как улучшить процесс разработки на PHP, чтобы стартер-кит подходил для реальных задач.
Примерная структура, которую я наметил:
framework/ — ядро (функции, автозагрузка, конфигурация, маршрутизация).
modules/ — модули (например, авторизация, работа с пользователями, блоги).
themes/ — базовые шаблоны.
storage/ — кеш, логи, временные файлы.
Я хочу, чтобы стартер-кит был удобным и подходил как для новичков, так и для опытных разработчиков. Буду рад любым советам, идеям, кодовым примерам или обсуждению.
Заранее спасибо за помощь! 🙌
https://github.com/lifesheets/php-startkit
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
По поводу констант
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
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 , я пока думаю как организовать, структуру веди правельно нужно со старта сделать, чтоби потом не переделивать глобально. А так спасибо за подказку. Как думаешь базовий дизайн если взять твинго норм будет или всеже сделать базовую струтуру ?
По поводу констант
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) ?? ''));
Я немного названия их позаимствовал, и сделал так как нужно.
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` для базового дизайну.
# **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
https://github.com/lifesheets/sandbox
Где тести провожу
________
посл. ред. 06.12.2024 в 06:57; всего 1 раз(а); by wearnings
Тоже занимался такой фигней. Бесполезная трата времени, когда подобные стартер киты ужа давно написаны на всех языках, оптимизированы и протестированы.
Если прям хочется покопаться на низком уровне - как говорили выше, возьми опен сорс модули из какого нибудь laravel и сооруди из них свой "уникальный" проект.
А всяких велосипедостроителей не слушай. Они полжизни тратят на написание того что уже написано. А остальное время тратят на оптимизацию и исправление багов. И в лучшем случае у них получается средне.
В итоге они потратили свое время (деньги клиента) и ничего полезного не сделали
________
посл. ред. 05.12.2024 в 23:44; всего 2 раз(а); by Dark_AKC
Если прям хочется покопаться на низком уровне - как говорили выше, возьми опен сорс модули из какого нибудь laravel и сооруди из них свой "уникальный" проект.
А всяких велосипедостроителей не слушай. Они полжизни тратят на написание того что уже написано. А остальное время тратят на оптимизацию и исправление багов. И в лучшем случае у них получается средне.
В итоге они потратили свое время (деньги клиента) и ничего полезного не сделали
________
посл. ред. 05.12.2024 в 23:44; всего 2 раз(а); by Dark_AKC