Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія | Попередня ревізія Наступна ревізія По сторонах наступні версії | ||
yalf [2020/06/05 03:28] |
yalf [2023/06/16 10:24] nightfly |
||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
+ | ====== YALF - Yet Another Lightweight Framework ====== | ||
+ | {{: | ||
+ | |||
+ | |||
+ | ===== Навіщо? | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== Що вколючає? | ||
+ | |||
+ | * [[nyanorm|NyanORM - для надзручної роботи з БД]] | ||
+ | * [[ubrouting|ubRouting - для забезпечення роботи із зовнішніми даними, | ||
+ | * [[apiastral|Astral - для швидкого прототипування вьюшок]] | ||
+ | * [[ubillingcache|Ubilling Cache - для влаштовування кешування всілякого]] | ||
+ | * [[snmphelper|SNMP helper - для штурхання залізяк і не залізяк в SNMP]] | ||
+ | * [[omaeurl|OmaeURL - для зручної роботи із зовнішніми API та іншими віддаленими URL-ами]] | ||
+ | * [[ubillingtelegram|Telegram API - для базової роботи з ботами Telegram]] | ||
+ | * [[wolfdispatcher|WolfDispatcher - і зручного написання хуків для них]] | ||
+ | * [[stardust|StarDust - для того, щоб зручно менеджити ваші процеси]] | ||
+ | * І ще багато-багато шматочків, | ||
+ | |||
+ | |||
+ | |||
+ | ===== Системные требования ===== | ||
+ | |||
+ | **PHP:** >=5.3, 7.0, 7.2, 7.4, 8.2\\ | ||
+ | **PHP extensions: | ||
+ | **PHP Options:** short_open_tag=on, | ||
+ | |||
+ | |||
+ | ===== Установка ===== | ||
+ | |||
+ | <code bash> | ||
+ | $ mkdir myapp | ||
+ | $ cd myapp | ||
+ | $ fetch http:// | ||
+ | $ tar zxvf yalf_current.tgz && rm -fr yalf_current.tgz | ||
+ | $ chmod -R 777 exports content config | ||
+ | </ | ||
+ | |||
+ | ===== Начальная конфигурация config/ | ||
+ | |||
+ | <file ini yalf.ini> | ||
+ | ; Main module name from modules/ | ||
+ | INDEX_MODULE=" | ||
+ | ; Template name to preload from skins/ like " | ||
+ | YALF_SKIN=" | ||
+ | ; Default application language. Loaded from languages directory. | ||
+ | YALF_LANG=" | ||
+ | ; Allow online language switching by remote clients? | ||
+ | ; Now supported locale switching by GET callback like ? | ||
+ | YALF_LANG_SWITCHABLE=0 | ||
+ | ;Is application global menu rendering enabled? | ||
+ | YALF_MENU_ENABLED=1 | ||
+ | |||
+ | ; XHProf libs path. Recomended to be masked in production. | ||
+ | XHPROF_PATH=" | ||
+ | |||
+ | ; Your application logo, name and site URL | ||
+ | YALF_LOGO=" | ||
+ | YALF_URL=" | ||
+ | YALF_APP=" | ||
+ | YALF_TITLE=" | ||
+ | |||
+ | ; Disabled modules list. Separator - comma. | ||
+ | YALF_DISABLED_MODULES="" | ||
+ | |||
+ | ; Emulate RCMS users auth and rights system? | ||
+ | YALF_AUTH_ENABLED=0 | ||
+ | |||
+ | ; Modules which not require any authorization (public modules) | ||
+ | YALF_NO_AUTH_MODULES="" | ||
+ | |||
+ | ; Logging emulation. Possible values: fake(output to nowhere), file(output to content/ | ||
+ | YALF_LOGGING_TYPE=" | ||
+ | YALF_LOG_TABLE=" | ||
+ | |||
+ | ;Configs editable from web with sysconf module. Comma separated. | ||
+ | YALF_EDITABLE_CONFIGS=" | ||
+ | |||
+ | ; List of layers which must be loaded, with their dependencies. | ||
+ | ; Format: LAYER_*=" | ||
+ | LAYER_LOCALE=" | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | |||
+ | ; Renderer layers | ||
+ | LAYER_WEBRENDER=" | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | ===== Чуть более детально ===== | ||
+ | |||
+ | Основным файлом конфигурации для вашего приложения является вышеуказанный **config/ | ||
+ | |||
+ | Если вкратце, | ||
+ | <code php> | ||
+ | |||
+ | возвращающий boolean. | ||
+ | |||
+ | ===== Слои Страха ===== | ||
+ | |||
+ | Вы всегда можете оптимизировать загрузку библиотек из **api/ | ||
+ | |||
+ | <code ini> | ||
+ | LAYER_NYANORM=" | ||
+ | LAYER_CACHE=" | ||
+ | LAYER_MAPS=" | ||
+ | </ | ||
+ | |||
+ | Либо отдельно перечислить это в вашем личном слое библиотек, | ||
+ | <code ini> | ||
+ | LAYER_MYAWESOMEAPP=" | ||
+ | </ | ||
+ | |||
+ | Следует заметить, | ||
+ | |||
+ | ===== Web и CLI приложения ===== | ||
+ | |||
+ | Используя разные слои отображения, | ||
+ | |||
+ | Давайте для примера посмотрим как может работать простое CLI приложение работающее при этом скажем с [[ubillingcache|кэшированием]] и [[omaeurl|OmaeURL]]. Для этого мы используем следующие слои: | ||
+ | |||
+ | <code ini> | ||
+ | LAYER_CLIRENDER=" | ||
+ | LAYER_ADVICEAPP=" | ||
+ | </ | ||
+ | |||
+ | И собственно код, рисующий нам в CLI " | ||
+ | |||
+ | <code php> | ||
+ | |||
+ | if (ubRouting:: | ||
+ | if (ubRouting:: | ||
+ | $getOption = ubRouting:: | ||
+ | if ($getOption == ' | ||
+ | $cache = new UbillingCache(); | ||
+ | $cacheTimeout = 3600; | ||
+ | $cacheKey = ' | ||
+ | |||
+ | $currentAdvice = $cache-> | ||
+ | if (empty($currentAdvice)) { | ||
+ | //need to update cache | ||
+ | $adviceUrl = ' | ||
+ | $fga = new OmaeUrl($adviceUrl); | ||
+ | $rawAdvice = $fga-> | ||
+ | if (!empty($rawAdvice)) { | ||
+ | $rawAdvice = @json_decode($rawAdvice, | ||
+ | if (!empty($rawAdvice)) { | ||
+ | if (isset($rawAdvice[' | ||
+ | $currentAdvice = $rawAdvice[' | ||
+ | //updating cache | ||
+ | $cache-> | ||
+ | } | ||
+ | } | ||
+ | } else { | ||
+ | show_error(__(' | ||
+ | } | ||
+ | } | ||
+ | |||
+ | show_window(__(' | ||
+ | } else { | ||
+ | show_error(__(' | ||
+ | } | ||
+ | } else { | ||
+ | show_error(__(' | ||
+ | } | ||
+ | } else { | ||
+ | show_error(__(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Все, теперь мы можем использовать наше приложение из CLI прямо вот так: | ||
+ | |||
+ | <code bash> | ||
+ | $ php index.php --get=advice | ||
+ | Advice of the hour: | ||
+ | bolshe blya hodi peshkom! | ||
+ | $ | ||
+ | </ |