Ядро SKY.

Три файла

Основу ядра SKY. составляют файлы:

Первый содержит необходимый код для любых точек входа, второй для точек входа `front` и `admin`, третий только для точки входа `front`. На базе функций и классов (объектов) предоставленных в этих файлах, строится вся система SKY., любые SKY.-приложения и т.п. По сути, код в этих файлах дополняет, язык программирования PHP и БД MySQL необходимыми функциями и классами, которые построены на основании наиболее часто употребляемых частей алгоритмов в веб-программировании и которые сводят эти алгоритмы к максимальной простоте и удобству использования. Всего до тридцати функций в глобальной области видимости и четыре объекта. Таким образом в глобальной области видимости, доступны три объекта SKY, USER, и ADM. Последний не определен явно и генерируется из массива, посредством приведения типа, этот объект доступен, если текущий визитер имеет собственную запись в таблице `users` (зарегистрированный пользователь) и авторизован в текущий момент. Функции ядра, достаточно просты чтобы их описывать, если вы программист и видите их код, вы поймете их назначение. Несколько слов об объектах ядра SKY. Все объекты ядра могут иметь один екземпляр (используются как синглтоны).

Три объекта

Объект SKY. многофункциональный - выполняет функции распаковки и сохранения в БД настроек сайта, несет функции реестра данных, инкапсулирует функционал трассировки. В классе SKY_WING предоставляется специальный способ (который позволяет минимизировать код) добавления и обновления рядов таблиц, с одновременно внедренным функционалом валидации данных записываемых в таблицы, при этом используется информация о структуре таблиц, которая может быть сохранена (закеширована) объектом SKY. в БД. В этом классе подразумевается, что имена полей формы на странице добавления или редактирования объекта приложения, совпадает с колонками соответствующей таблицы, например поля формы редактирования некоторой статьи (объект приложения), совпадает с колонками таблицы articles. Объект ADM - просто инкапсулирует в один объект данные массива PHP (для более удобного использования) информацию о доступе к административному разделу для текущего пользования (если пользователь имеет хоть какой-то доступ в адмику). А объект USER содержит свойства (информацию) и методы управления текущего визитера сайта. Вообще, в SKY. нет таблицы сессий, но есть частично эквивалентная (функционально) таблица посетителей `visitors`.

Восемь специальных функционалов

Для фронтальной части веб-приложений, в ядре SKY. предусмотрены механизмы (функционал):

Другой важный функционал:

Три таблицы

В SKY.-приложениях всегда (за исключением редких случаев) определены таблицы `visitors`, `users`, `memory`. В первой записываются сессии посетителей сайтов, вторая - таблица зарегистрированных пользователей, последняя - специальная таблица, в которой каждая запись (ряд) имеет свое собственое уникальное функциональное назначение. Например в этой таблице ряд с id=1 хранит трассировочный вывод AJAX запросов.

Три архитектурных решения для построения веб-приложений

Рекомендуемое архитектурное решение, при построении веб-приложений, подразумевает, что LAYOUT страниц сайта, распологается в файле index.php, а вывод в STDOUT (браузер) задерживается функцией PHP ob_start(). Конечно, если приложение имеет несколько одновременно поддерживаемых стилей или для приложения необходима не одна, а более LAYOUT, то они могут распологаться в папке /view/. Фронтальный обработчик страниц, в этом архитектурном решении, распологается в файле main/body.php. Обработчики для страниц, где имеется много кода, выносятся при этом, в файлы main/b_имя-страницы.php. Соответственно, AJAX запросы в файле main/ajax.php, а запросы для обработки которых требуется большое кол-во кода, выносятся в main/a_имя-запроса.php. Для приложений с очень большим кол-вом функционала, рекомендуется использовать архитектурное решение с использованием MVC Layer, так как этот паттерн очень хорошо формализирует местоположение кода приложения по простой схеме и концептуально создает большое кол-во файлов контроллеров и моделей. LAYOUT при этом, может также находиться в файле index.php. Обработчики запросов (и AJAX и фронтальной части сайта), в случае использования паттерна MVC, хранятся, как обычно, в контроллерах (в файлах main/mvc/c_имя-страницы.php). Третье архитектурное решение при построении приложений - NICE, аббревиатура взята из слов Not Index Central Enter. Обработчики страниц, в этом случае, хранятся в файле index.php и файлах имя-страницы.php (корневой папки приложения).

Обратите внимание: CRON Layer, всегда распологается в main/cron.php. Задачи-крон, обычно имеют мало кода PHP и могут все вместе распологаться в этом одном файле. Однако, если кода много и/или исполнение кода крон-задачи требует повышеной надежности, отдельные крон-задачи необходимо распологать в файлах main/c_крон-задача.php. Дело в том, что, если файл main/cron.php содержит код многих задач, то для тех задач, которые определены ниже в файле, существуют бОльшая вероятность быть ошибочно невыполненой, из-за фатальных ошибок в задачах, которые определены выше в файле.

Смотрите примеры реализации описаных архитектурных решений на странице загрузки SKY.

Система однобуквенных префиксов в SKY.

В ядре SKY. используется система однобуквенных префиксов с знаком подчеркивания. Глобальные переменные с префиксами:

В файлах view, в глобальной области видимости (при использовании MVC генерируются автоматически):

Свойства объекта SKY:

Имена файлов MVC-layer:

Свойства объектов MVC-Layer и имена методов контроллеров MVC:

Для детализации последовательности вызовов и управлению MVC-Layer, смотрите код конструктора объекта SKY_view. Для "реестровых переменных" внутри модели MVC, рекомендуется использвать свойства с префиксом x_, например $this->x_...

Всегда в папке view (возможно включая подпапки стилей), файлы могут иметь префиксы:

Всегда, папки начинающиеся с знака подчеркивания, это папки (дирректории), которые должны существовать только на компьютере разработчиков. На Production не должно быть папок, начинающихся с знака подчеркивания. На компьютере разработчика рекомендуется иметь папки _arch, _dev, _loc

Система версирования в SKY.

В SKY. используется система версирования по схеме: число-точка-три_цифры, например, версия 2.232. Номера версий, при этом удобно представлять типом `FLOAT` в памяти. В этой схеме "число" - мажоритарный номер версии, "три_цифры" - номер билда (англ. Build). Если указывается в публичном доступе, новая версия некоторого проекта, рекомендуется назначать номер версии максимально близкий к значению, где после точки будет стоять три нуля. Например, версия 0.980 (претендент на стабильную версию). Подразумевается, что делается первая публичная выгрузка проекта и после максимум примерно 10 билдов планируется получить стабильную версию 1.000. Расчетное значение билдов, при этом, необходимо умножить на 2 (двойной запас).

Если вы полностью переписали приложение, так что оно стало никак не совместимо со старой версией, несмотря на то что его назначение осталось прежним, приложению необходимо дать новое имя и начать версирование сначала.

Идеализация ядра и всей системы SKY.

Все файлы, в том числе ядро SKY., пакеты и приложения подлежат версированию. После некоторого итерационного процесса, необходимо получить идеальную версию "clear cloud" (в четко определенных рамках). Всегда, необходимо стремиться чтобы идеальное состояние "clear cloud" было наиболее часто употребимо для повторного использования (наиболее частый частный случай). Могут существовать облачные модификации файлов или приложений, которые представляют редкие частные случаи (по сравнению с "clear cloud"), они генерируются скриптами модификации. Не следует делать приложения или файлы чрезмерно способные к конфигурированию. Часто возможности кода таких приложений остаются неупотребимы, плюс приложение становится чрезмерно сложным, запутанным и менее производительным. При проектировании в SKY., нужно помнить главное правило - "В SKY. все тривиально просто".

Ввиду парадигмы SKY. о том что идеальный код может быть только один для каждой конкретной задачи, в SKY., например, может присутствовать только одно приложение FORUM.SKY. (реализация форума общего назначения), одна идеальная версия. Но могут быть скрипты модификаций, например форум для создания сайта, торрент-сервера. Код последнего форума, генерируется из форума FORUM.SKY. "clear cloud" путем его модификации (специальным скриптом). Последний форум также должен называться FORUM.SKY., но иметь аттрибут `Portname` равным `torrent`. Если изменения слишком большие, для того чтобы получить идеальный форум с ориентацией на торрент-сервер (что подразумевает - "из этого форума невозможно создать идеальный торрент-сервер"), то приложению дается иное имя, и оно дожно быть представлено в системе SKY. как независимое приложение, а не порт от какого либо приложения, например TORRENT.SKY. Если использовано, много идей от "старого" приложения, можно дать имя TORRENT.FORUM.SKY., но нужно стремиться всегда разрабатывать идеальное приложение в определенных для него рамках.

Аттрибут `Portname` могут иметь приложения и CORE-SKY файлы, например можно написать файл main/sky.php c `Portname` равным postgre_sql, это будет означать что функционал этого файла стремиться остаться прежним, но использует другую основу - БД postgre sql. Если функционал файла расширен, но полностью сохраняет прежний функционал, `Portname` должен начинаться со слова `extended`, если не сохраняет - со слова `final`, например - Portname: final search engine. Разработчики должны понимать, что если имеющийся `clear cloud` CORE-SKY файл не удовлетворяет требованиям приложения, все равно - гораздо удобнее модифицировать имеющийся `clear cloud` (или один из портов), чем писать файл заново, конечно можно учесть рейтинг файла в CORE-SKY Codebase.

Имена всех приложений в системе SKY. должны состоять из заглавных букв и иметь постфикс .SKY. как указано выше в примерах. Имя приложения должно указывать на принадлежность к публично доступной системе SKY.

Файлы, пакеты и приложения могут не иметь аттрибута `Portname`, не нужно указывать его для объектов "clear cloud" (идеальных или стремящихся быть идеальными).

Файлы и пакеты (но не приложения, они всегда уникальны) могут иметь аттрибут `Filename` со значением unique, что идеализирует файл. Например файл в системе `f:main/sky.php`, имеет такой аттрибут, и в систему невозможно добавить файл с таким же именем. Но если такого аттрибута (с таким же значением) нет у файла, например `f:index.php`, то таких файлов в системе может быть несколько. Это означает, что создать такой идеальный файл невозможно, ввиду равного распределения частоты использования разных вариантов этого файла.

В соответсвии с этим, в БД кода для повторного использования "CODEBASE", каждая запись может иметь аттрибут `Filename` и `Portname`.

Маркеры в SKY. 2do.

В определенных обстоятельствах, в текущий момент времени, программируя (чаще это относится к коду "clear cloud") код, разработчик может не иметь возможности сделать часть кода идеальной. Если он понимает это, но тем не менее, большая часть написанного им кода, по его мнению, является идеальной, он может публиковать такой код для общественности, но в "не идеальных" частях кода, рекомендуется ставить маркер "2do", используя комментарий. Для PHP кода нужно ставить комментарий начинающийся с знака "#", например

# 2do

или лучше с разъяснением:

# 2do: сделать ревизию этой статьи

Такие маркеры позволят "увидев вспомнить" или даже позволят другому человеку сделать исправления (дополнения) кода и стать соавтором кода без полного анализа кода (на идеальность) написаного первым автором. Этот ньюанс, позволяет ускорять получение общественностью идеального кода.

Даже на этом сайте есть специальное меню (и будет всегда) - "2do". Это сделано для того чтобы общественность знала приоритеты развития проекта SKY. Кроме того, любой программист в мире, может стать соавтором важных задач SKY. в текущий момент развития проекта, что может увеличить его влияние в проекте SKY. Вообще в SKY. имеется система уровней профилей пользователей: Root, ProgrammerL1 и т.д. Первоначально, после регистрации, пользователь получает уровень профиля "Registered" и сразу же может учавствовать в развитии системы SKY., делать выгрузку своей работы. Без регистрации, возможно только скачивать код и пользоваться им в своих частных проектах. Уровень профиля определяет уровень доступа к ресурсам системы SKY. В меню "2do" указываются важные задачи, которые необходимо выполнить, отсортированные в порядке важности. Необходимо учитывать, что в списке могут быть пропущены секретные задачи.

Для участников, кроме уровней профилей, существует система званий и рейтингов. Последние определяют уровень влияния на развитие системы SKY. Принятие решения об идеальном виде, любого частного объекта в системе SKY., может проводиться одним человеком, многими людьми, либо (в будущем) самой системой SKY. (алгоритмически, возможно, первоначально не полное решение, а частичное). Но голос программистов, участников системы SKY., с высоким рейтингом, всегда будет очень важен.

Маркеры (свойства) записей в БД кода CODEBASE

В системе SKY. в БД кода для повторного использования записи могут иметь свойства класса "Code targets". Каждое свойство может быть отмечено галочкой или нет (логика "да" или "нет"), вот список свойств: localtask - запись не претендующая на слишком значимую, решающая локальную задачу в проекте, optimized - запись претендует на оптимизированное состояние кода в ней (кристаллизация не заявляется идеальной), idea - запись, вносящая новую идею в проект, coresky - запись претендующая на код первого, второго, третьего крыла SKY., mystar - разработчик уверен о идеальности записи, полной (или высокой) кристаллизации, waiting_votes - открыто голосование за запись, opened for new authors - соавторы разрешены. Выбор свойств записи автором и голосование участников системы за запись, влияет и на помещение записи в нужный раздел системы SKY. и на рейтинг и звание автора записи.

Свойства класса "Code status": 2domust_extendedunknown - выбор одного из трех.