PHP, MySQL | Создание универсального стартер-кита для PHP-проек
178396284 , Не я ето сказал, я не блокирую ни кого, каждий клиент или споживач важен. Просто для себя пишу код. А слушаю совети. Просто споминаю билое время, такое настольгия. Жалко что бум уже не тот.
178396284 , Ну пойми, им ето не нужно! Обсирать умеют, говорить что круче других. А в результате что имеют?
Красавчик 🙌
Лучшая практика сейчас разделять клиент и сервер без дополнительных шаблонизаторов на php с целью написания единой кодовой базы (можно на том же vuejs или flutter) тогда получается весь контент html кешируется в браузере как статика и лишь подгружаются данные по отдельности либо отправляются (другими словами веб-приложение плюс на смартфоны отдельный билд возможно собрать с кастомизацией легко)
Something [БАН] (9 дек 2024, в 9:47)
|- assets
|-- themes
|-- js
|-- css
|- cache
|- core
|-- classes
|--- subclasses_example1
|--- subclasses_example2
|--- some_class1.php
|--- some_class2.php
|-- plugins
|-- start.php
|-- constants.php
|- modules
|- plugins
|- uploads
|- .htaccess
|- index.php
И вместо вот этого ужаса
Сделать что-то типа
Автоматизировать короче всё по максимуму, чтобы индусского кода не было
Переделал, так лучше будет?|- assets
|-- themes
|-- js
|-- css
|- cache
|- core
|-- classes
|--- subclasses_example1
|--- subclasses_example2
|--- some_class1.php
|--- some_class2.php
|-- plugins
|-- start.php
|-- constants.php
|- modules
|- plugins
|- uploads
|- .htaccess
|- index.php
И вместо вот этого ужаса
private static array $namespaceMap = [
'Nucleus' => 'nucleus/classes', // Простір імен для Nucleus
'NucleusHelpers' => 'nucleus/classes/helpers', // Простір імен для Helpers
'NucleusLibraries' => 'nucleus/classes/libraries', // Простір імен для Libraries
'NucleusServices' => 'nucleus/classes/services', // Простір імен для Services
];
'Nucleus' => 'nucleus/classes', // Простір імен для Nucleus
'NucleusHelpers' => 'nucleus/classes/helpers', // Простір імен для Helpers
'NucleusLibraries' => 'nucleus/classes/libraries', // Простір імен для Libraries
'NucleusServices' => 'nucleus/classes/services', // Простір імен для Services
];
Сделать что-то типа
spl_autoload_register(function ($class) {
$class = preg_replace('#^\\\\c\\\\#', '', $class);
$class = str_replace('\\', '/', $class);
require root . '/classes/' . $class . '.php';
});
Автоматизировать короче всё по максимуму, чтобы индусского кода не было
# Визначення шляху до директорії з класами
define('LCMS_CLASSES_DIR', __DIR__ . '/../nucleus/classes/');
# Оголошення глобальних функцій
require_once(LCMS_CLASSES_DIR . "/functions.php");
spl_autoload_register(function ($class) {
# Префікс класу
$prefix = 'LiveCMS\\';
# Чи використовує клас простір імен з префіксом?
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
# Якщо ні, перейти до наступного зареєстрованого автозавантажувача
return;
}
# Відрізати частину префікса
$relative_class = substr($class, $len);
# Побудувати шлях до файлу для включення
$file = LCMS_CLASSES_DIR . str_replace('\\', '/', $relative_class) . '.php';
# Якщо файл існує, підключити його
if (file_exists($file)) {
require_once($file);
}
});
wearnings (Вчера в 02:03)
Переделал, так лучше будет?
Есть на это все composer и PSR-4 Переделал, так лучше будет?
# Визначення шляху до директорії з класами
define('LCMS_CLASSES_DIR', __DIR__ . '/../nucleus/classes/');
# Оголошення глобальних функцій
require_once(LCMS_CLASSES_DIR . "/functions.php");
spl_autoload_register(function ($class) {
# Префікс класу
$prefix = 'LiveCMS\\';
# Чи використовує клас простір імен з префіксом?
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
# Якщо ні, перейти до наступного зареєстрованого автозавантажувача
return;
}
# Відрізати частину префікса
$relative_class = substr($class, $len);
# Побудувати шлях до файлу для включення
$file = LCMS_CLASSES_DIR . str_replace('\\', '/', $relative_class) . '.php';
# Якщо файл існує, підключити його
if (file_exists($file)) {
require_once($file);
}
});
Плюс если ты хочешь это сделать в китстартер, то имеет смысл смотреть сразу в сторону пакетов, которые потом могут обновляться или блокироватьс массово у всех клиентов, также из бонусов будут версии которые добавят стабильную работу, так как в случае с кейсом - пример: ты отдал заказ клиенту, прошло N лет, проект клиента вырос, обновлений не было, и поставили задачу перейти на свежую версию твоего ядра, то накатить (с условной 1.1) до 2 версии не будет возможности так как нету этапов обновления и отладки кода.
Так как обычная практика при обновлении легаси это по этапное обновление и стабилизация проекта. 1.1->1.2->1.3...2
________
посл. ред. 11.12.2024 в 02:15; всего 1 раз(а); by System
wearnings , к тому же если при надобности надо будет использовать что-то из кита то можно будет подключить к проекту (другому) и использовать без надобности переноса и адаптации
System , та расчет проектов простих, смотри например вот заказ здал сегодня, восновновном для таких целей делаю!
На скриншоте, вивел пример но думаю как упрастить и улучшить
=============
## Order execution
### plugins/main/index.php
- https://axyglobal.co/
### plugins/free/index.php
- https://axyglobal.co/free/
### plugins/start/index.php
- https://axyglobal.co/start/
### plugins/story/*.php
- https://axyglobal.co/story/1/
- https://axyglobal.co/story/2/
- https://axyglobal.co/story/3/
- https://axyglobal.co/story/4/
- https://axyglobal.co/story/5/
- https://axyglobal.co/story/6/
- https://axyglobal.co/story/7/
- https://axyglobal.co/story/8/
- https://axyglobal.co/story/9/
- https://axyglobal.co/story/10/
- https://axyglobal.co/story/11/
### plugins/thank/index.php
- https://axyglobal.co/thank/
### plugins/error/index.php
- https://axyglobal.co/error/
### plugins/privacy/index.php
- https://axyglobal.co/privacy/
=============
------
88640_20241211011859.png (158.0 Kb)
Скачиваний: 1
На скриншоте, вивел пример но думаю как упрастить и улучшить
=============
## Order execution
### plugins/main/index.php
- https://axyglobal.co/
### plugins/free/index.php
- https://axyglobal.co/free/
### plugins/start/index.php
- https://axyglobal.co/start/
### plugins/story/*.php
- https://axyglobal.co/story/1/
- https://axyglobal.co/story/2/
- https://axyglobal.co/story/3/
- https://axyglobal.co/story/4/
- https://axyglobal.co/story/5/
- https://axyglobal.co/story/6/
- https://axyglobal.co/story/7/
- https://axyglobal.co/story/8/
- https://axyglobal.co/story/9/
- https://axyglobal.co/story/10/
- https://axyglobal.co/story/11/
### plugins/thank/index.php
- https://axyglobal.co/thank/
### plugins/error/index.php
- https://axyglobal.co/error/
### plugins/privacy/index.php
- https://axyglobal.co/privacy/
=============
------
88640_20241211011859.png (158.0 Kb)
Скачиваний: 1