Минималистичный PHP фреймфорк, наработки которого можно перенести простым copy/paste в любой мини-скрипт.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Pavel Belyaev 7becd72264
hzhz
3 years ago
CLASSES hzhz 3 years ago
DOC Add doc for LE_MAIL 4 years ago
LE hzhz 3 years ago
MODULES hzhz 3 years ago
PUB hzhz 3 years ago
TPL hzhz 3 years ago
README.md V0.1.1 4 years ago
copyrights.txt Draft v1 4 years ago
demo-setup.sql hzhz 3 years ago
init.php Add access level control 4 years ago

README.md

LE Framework Introduction

Предупреждение

Данный продукт не является коммерческой версией, всё публикуется на уровне AS IS, цель всего проекта - обучение и просто по фану слепить что-то, для коммерческих приложений используйте что-то типа Laravel, Yii и подобные фреймворки, тут просто игрушка

вполне возможно что из этого что-то выйдет пригодное к жизни, но сейчас тут просто публикуются примеры кода из видеоуроков с Youtube

Основная работа автора не связана с веб-разработкой, но я пилю всякое такое на досуге ради спортивного интереса...

весь публикуемый код не претендует на звание эталона, это просто велосипед ради развлечения!

Перед вами простейший фреймворк, архитектура которого приспособлена для мультисайтовой раскатки. Т.е. у вас есть одна папка с фреймворком, который сразу и движок, а конкретные сайты или консольные приложения подключают файл kernel/init.php, создают файл конфигурации в папке приложения, при желании переопределяют или создают новые классы, модули и т.д., в итоге, с минимальными затратами можно слепить простейшее нестандартное приложение.

В будущем на этом фреймворке можно будет создавать такие приложения, как:

  • Консольные демоны (службы)
  • Блоги и статейные сайты
  • Интернет-магазины

Структура приложения

├──./app_dir
│   ├── app_conf.php - конфигурация приложения
│   ├── /CLASSES - может отсутствовать
│   ├── /MODULES - может отсутствовать
│   ├── /TPL - может отсутствовать
│   ├── /sessions - создается автоматически, если нет
│   ├── /web - доступная веб-серверу папка
│   │   ├── /assets - статичные файлы, не меняются приложением
│   │   │   ├── /css
│   │   │   ├── /js
│   │   │   └── /etc
│   │   ├── /pub_data - публикуемые ресурсы типа картинок
│   │   └── index.php - точка входа

пример создания структуры

cd my_app
mkdir -p {CLASSES,MODULES,TPL,sessions,web} web/assets/{css,js,etc} web/pub_data
touch app_conf.php web/index.php

index.php - точка входа

<?php

define("APPDIR",realpath(__DIR__."/../").DIRECTORY_SEPARATOR);
include "/www/kernel/init.php"; //path to framework

app_conf.php

<?php 
/*DB CONFIGURATION*/
SYSCONF::$DB['db_name'] = 'project1';
SYSCONF::$DB['user'] = 'root';
SYSCONF::$DB['pass'] = '...';
//SYSCONF::$DB['host'] = 'localhost';

//дефолтный модуль в корне сайта...
SYSCONF::$DEFAULT_MODULE['default']='welcome';

SYSCONF::$DEFAULT_MODULE['admin']='blog';




SYSCONF::$SPACE_LIST = [
    'admin|cabinet'=>'admin',
    'main'=>'main'
];

SYSCONF::$MOD_ALIASES['main'] = [
    'cart|category|product'=>'shop'
];

SYSCONF::$MOD_ALIASES['admin'] = [
    'category|cart|orders'=>'catalog'
];

Nginx Example config

#project1.loc
server {

listen 80;
default_type text/html;
server_name project1.loc;
root /www/projects/project1/web;

location ~* ^/pub/(.+\.(?:gif|jpe?g|png|js|css|woff|ttf|svg|eot|html|htm|txt))$
{
	alias /www/kernel/PUB/$1;
	access_log off;
	expires 10d;
}

index index.php;

location ~* ^.+\.(txt|jpe?g|gif|png|ico|css|txt|bmp|rtf|js|svg|eot|ttf|woff|html?)$
{
	access_log off;
	add_header Cache-Control "public, max-age=31536000, immutable";
}
	
#все запросы направить на index.php
location / {
	rewrite ^/(.*)$ /index.php;
}

location  ~ \.php$ {
	include snippets/fastcgi-php.conf;
	fastcgi_pass unix:/run/php/php7.3-fpm.sock;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}


}

Весь процесс разработки логируется на YouTube в виде видеоуроков, но пока нет времени, так что следите за гитхабом.

Документация