Крылья SKY

SKY /
WINGS28
дочерние связи:
В этом узле (и дочерних) рассматриваются детали SKY Framework для построения веб-приложений. Если сказать точнее, то под SKY Framework подразумевается Coresky код, это скорее просто набор гармонично связанных файлов для повторного использования, чем фреймворк. На текущий момент это всего лишь 23 файла общим размером 231 088 байт. Это на несколько порядков меньше, чем код других популярных фреймворк. Это плохо, что так мало? Впереди еще много работы, код будет расти, но уже сейчас реализовано все самое необходимое, чтобы делать классные сложные веб-приложения!

16 лет назад я первый раз написал веб-приложение на PHP. Были тысячи итераций, прежде чем Coresky код, эти 230 КБайт, стали такими, какие они сегодня. Что кардинально отличает Coresky код от популярных фреймворк, это то, что не используются namespace. Это усложняет использование кода с сайта packagist.org, ведь весь современный PHP код пишется с использованием namespace, composer, packagist.org и github. Вместо namespace, я вижу необходимость создать две суперглобальные переменные: $sky и $user, чтобы не писать каждый раз "global $sky;". Всего две! Я писал на хабре как можно это правильно сделать: где-то в самом начале запуска ядра SKY выполняется функция PHP (которой пока что нет), которая определяет две дополнительные суперглобальные переменные и блокирует запись во все глобальные переменные, разрешается только чтение. В этом случае, не будет проблем из-за использования суперглобальных переменных.

Главные составляющие Coresky кода сегодня: код первого крыла: sky.php, heaven.php, mvc.php, jet.php и gate.php - здесь примерно 30 helper функций, и около 12 классов. Это обработка ошибок и трассировка, работа с SQL - составление сложных запросов и борьба с SQL injection, призрачные SQL. Объект USER - обработка сессий и авторизация пользователей, CSN-AJAX функционал, система хуков для подстройки ядра для конкретного приложения. Экстра и жесткое кеширование, функционал меток, функционал для построения мультиязычных приложений и мобильных версий сайта. MVC функционал с парсером шаблонов Jet, и SKY-Gate.

Код второго крыла: "плюшки" для root-админ раздела, код для загрузки файлов на сервер, в том числе "crop" - вырезание картинок, генерация форм на основе специального синтаксиса с использованием PHP массивов, код для создания пакетов приложений и автоматического версирования, класс Rare, класс Schedule для построения многопотоковых консольных скриптов, в том числе для CRON. Первое и второе крыло составляют код Coresky, это те 230 КБайт, которые копируются в каждое приложение и составляют ядро.

Роутеры Laravel - плохое архитектурное решение, гораздо лучше без них, но со SKY-Gate. Все просто: пусть первый параметр адреса запроса определяет контроллер, а второй действие в нем. Фильтрацией входных данных занимается SKY-Gate. Визуальные средства программирования - это всегда лучше чем текстовый код. В SKY-Gate визуально определяются, с помощью регулярных выражений, входные данные и передаются в контроллеры. В контроллеры дописывается автоматически сгенерированный класс Gape и контроллеры копируются в папку var/gate, типа как кэшированные.

Идея класса Rare проста: это тот код, который всегда нужен, но редко используется, например, регистрация или авторизация пользователей. В общей массе кликов, такой код нужен редко, но он нужен в любом приложении.

Довольно часто приходится делать сложные формы, так что без класса Form просто не обойтись. Крутая штука, как и SKY-Gate. Так что лучше уж все формы делать с использованием этого класса. Есть двойная валидация - на javascript и на PHP. Есть также отображение данных в таблице: вместо заполненной данными формы, выводится таблица с данными, на основе все того же массива, представляющего форму.

Класс Install используется для создания пакетов приложений, которые можно установить с помощью инсталлятора moon.php и версирования приложений. Может когда-нибудь в будущем этот класс сможет делать патчи, но пока что он умеет создавать только пакеты приложений.

Шаблонизатор Jet - очень удачная штука, всего 333 строки кода, но умеет очень много. С помощью Jet создавать шаблоны - одно удовольствие. Есть препроцессор, супер итераторы и маркеры частей файла плюс алиасы для них. Это то чего нет в Blade.

В папке main/w2 (второе крыло) также лежат файлы standard_c.php (стандартный контроллер) и шаблон к нему standard_c.tpl, language.php и language.tpl. Последний используется для интерфейса перевода мультиязычных приложений на другие языки. Если вы в приложении пользуетесь функцией t() или командой Jet @t(), то строки интерфейса автоматически попадают в таблицу $_language, и с помощью этого функционала удобно переводить приложения. Предусмотрен также API для полностью автоматического перевода интерфейса приложения на другие языки с помощью, например Google translate, но эта часть пока не готова. Стандартный контроллер содержит действия для класса Language, SKY-Gate, показа страницы Exception и еще кое-какие мелочи.

В Интернете, практически на всех сайтах необходимо иметь админ раздел, где администрация могла бы вести работу. Код админки нужно выполнять отдельно от фронтальной части приложений, а в CORESKY коде предусмотреть специальные средства для этого по следующим причинам:

1. потенциально обеспечивается лучшая безопасность раздела. Например, не вполне квалифицированные (с точки зрения безопасности) верстальщики, не смогут сделать "дыру" в безопасности, но также и по другим причинам;
2. в админ разделе можно использовать упрощенный дизайн без привлечения специалистов по дизайну. Это снижает стоимость и увеличивает скорость разработки, снижает вероятность ошибок в коде;
3. в простом и одинаковом дизайне у различных веб приложений, можно разобраться быстрее и эффективнее новичку в администрации;
4. файлы админки, построенные по простым правилам указанным выше, можно создавать используя визуальные средства проектирования, почти без прямого программирования человеком. Это увеличивает скорость разработки и улучшает безопасность кода. Я имею ввиду, что для простой схемы приложений, легче написать хорошие визуальные средства проектирования чем для сложной. Такой функционал имеется в приложении DEV.SKY.;
5. наличие специальных средств в коде CORESKY не исключает возможности создавать админ разделы по схеме как и у фронтальной части SKY-приложений.

Таким образом, файлы приложения админки в SKY-приложениях, располагаются в отдельной папке "admin", схема MVC не используется. Структуру директорий смотрите в узле DIRS.

В проекте SKY, частота (потенциального) использования кода для повторного использования, считается важным фактором. Код первого крыла используется наиболее часто, ему следует уделить наибольшее внимание, смотрите узел FIRST.

Обратите внимание: под термином "Framework" понимается код для повторного использования в файлах PHP. Система же SKY включает: Framework, приложение-клиент DEV.SKY., сервер Codebase, веб-сайт со статьями, блогами и корнями в которых обсуждаются детали SKY. с той целью чтобы сделать проект лучше, инструменты (полу-)автоматической генерации кода, а также ультимативно все возможное, чтобы достичь цели, см. GOAL.

Те программисты, кто написал более десяти веб-приложений, обратили внимание на то, что, несмотря что приложения могут сильно отличаться друг от друга, часть одного и того же кода присутствует во всех приложениях и более того - всегда (или почти всегда) выполняется. Написание такого кода не представляет творческий процесс, а простую кропотливую работу. Её можно однако избежать. Традиционно, для облегчения работы, используют код для повторного использования в одном из Framework или CMS, но часто даже их использование не решает эту проблему.

В этом узле корней, обратим внимание, что код первого крыла, принципы построения которого описываются в дочернем узле FIRST (и SECOND), потенциально мог бы успешно работать на большом (вплоть до 90%) количестве сайтов, реально, в данный момент работающих в Интернете, но речь не об этом, а о том, чтобы обратить внимание на важность такого кода, необходимости классификации кода по частоте использования и уделения максимального внимания коду, который чаще используется. В SKY. код классифицируется на код 1,2,3 крыла, смотрите термины.
опубликовано ENERGY - 18 Sep 2015 13:33 GMT
последнее редактирование - 30 Nov 2020 13:02 GMT
 +  0  -  комментировать