Інструкція з користування Фреймворком

Общее описание фреймворка

  1. Контроллер – это то, где реализовываются алгоритмы приложения (соединение и реализация представления – это одна из функций). Контроллер – часть программы, в которой реализуется прикладная задача (основные алгоритмы приложения). Здесь контроллер выполнен в виде действий: классы действий представляют из себя контроллер

  2. Пространство имен нужно для того, чтобы как-то отнести то что написано в файле к модулю. Есть пространство имен фреймворка, а есть пространство имен приложения (по большей части имеется в приложении, в нем указывается пространство имен модулей). После new (при создании экземпляра класса): 1) указывается пространство имен\класс или: 2) указывается класс, а перед этим указывается use и в нем пространство имен и конкретный класс (т.е. полный путь). Пример: use app\modules\index\pageModel; это означает, что если далее в коде встречается pageModel то будет использоваться именно тот, который описан в папке <папка приложения>\modules\index\model

Описание класса действия

  1. <URL>/<module>.<action>.<?actionFunction> – запрос в адресной строке браузера

    • Если <module>.<action>, то выполняется ф-ция perform текущего action. В функции perform - мы можем писать все что угодно, что хотим, чтобы выполнилось на сервере. Это действие, а действия на сервере могут быть совершенно разные
    • Если <module>.<action>.<?actionFunction>, то дополнительная указанная ф-ция, которая public (чтобы можно было запросить обозревателем)
  2. \<app>\app.php файл с описанием того, какое действие выполнять при запросе корня сайта (главный файл приложения)

  3. <actoin>.php такой файл с описанием класса действия создать в папке \<app>\modules\<module>\action (подключать файл действия никуда не нужно, фреймворк сам его подключит, когда я запрошу соотв. адрес)

  4. namespace <app>\modules\<module> так описать пространство имен (модуль – часть приложения, например: модуль авторизации, регистрации и т.д.). <app> – пространство (имен) приложения; <module> – подпространство (имен) модуля. Пояснение необходимости пространства имен: можно назвать класс каким-то именем. подключаешь стороннюю библиотеку, а там класс с таким же именем: возникает конфликт. Чтобы этого конфликта не существовало, придумали разграничить их, создав пространство, а имя этого пространства пишется вначале файла с описанием класса. в программе обращаться к тому или иному классу можно, указывая перед ним пространство имен. пространство имен - некоторое название. В пространстве имен можно писать любую уникальную комбинацию символов, однако чтобы было понятнее, для удобства указываем путь к файлу с классом (но это не путь к файлу, это принадлежность к пространству модуля)

  5. class <имя действия>Action extends \core5\BaseAction такой класс действия описывается в файле: \<app>\modules\<module>\action\<actoin>.php (пример, файл: \app\modules\index\action\index.php. Модуль index ничем не отличается от других модулей, кроме того, что скорее всего он будет указан как модуль по умолчанию в главном файле приложения (app.php))

    изначально в классе действия:
    • $m = new \core5\htmlPageModel(); создание экземпляра класса (объекта), описывающего модель страницы
    • $this->renderResponse('index', $mPage); представление (шаблон наполняется моделью), где 'index' - это шаблон. Выполняется 'index.php' из tpl текущего модуля, если такового нет, то из модуля common. $mPage в этом шаблоне всегда будет известна как $m. Кроме того доступ ко всем переменным этого объекта будет так же возможен без его упоминания, т.е. можно использовать как $m->title так и $title
    дополнительные возможности:
    • $m-><переменная> или $<переменная> доступна такая запись именно в шаблоне (обеспечивается фреймворком): <переменная> передаётся из контроллера в шаблон, и это то, как к этой переменной можно обратиться в шаблоне
  6. F::prp(<переменная>,<true|false>); функция отображает <переменная> (например массив $_SERVER, имя текущего класса __CLASS__, , имя текущей функции __FUNCTION__)

  7. Uri::appUri('/wordlearning/js/lang.js'); Формирует абсолютный путь к данному файлу, добавляет имя хоста, возможно подпапку приложения, если это необходимо, т.е. делает url-адрес.

  8. public function <имя функции>(<тип переменной> <имя переменной> = <значение по умолчанию>)

  9. $_params доступна в любом action, в ней массив $_REQUEST (но может быть и другая переменная, для того, чтобы переопределив ее в одном месте, она везде получала другие значения)

  10. $this-> это переменная текущего объекта класса

  11. $this->dbsql() возвращает объект для работы с базой данных

Описание класса модели данных

  1. \<app>\modules\<module>\model\page.php файл с классом модели данных для представления страницы (заполняем теми переменными, которые нужны)

Основы

  1. Класс может быть статическим: если не собираюсь создавать объект, а просто требуется сгруппировать свойства и методы. И там, где нужен функционал: можно обратиться в методу, не создавая объект класса. Обращение к свойству статического класса: <статический класс>::<свойство>; обращение к методу статического класса: <статический класс>::<метод>(<фактические параметры>);

js

Ajax

Создание и подключение файла шрифта

Для использования своего шрифта, необходимо наличие двух файлов: 1) файл шрифта [название шрифта].sfd 2) файл настроек шрифта [файл].css Создание файла шрифта: 1)Запустить приложение fontforge, нажать: создать. 2)кодировка->компактная 3)кодировка->добавить слоты кодировки->1 (или ввести количество символов, которое хотим добавить; если есть лишние неиспользованные слоты: кодировка->удалить неиспользуемые слоты) 4)клик правой кнопкой мыши по символу: информация о символе->значение unicode->написать: U+F0000 (это свободные в unicode поля, и далее их добавляем:U+F0000)->кликнуть: "по значению"->ОК 5)нарисовать символ 6)файл->создать шрифты->выбрать:woff->создать В файле [приложение].js подключаем css с с указанием на файл шрифтов, и с описанием классов, соответствующих элементам в файле шрифтов: $(document).ready(function () { $("#[идентификатор элемента html]").wordlearning({ css: ['/[путь]/[файл].css'] }); }); Файл настроек шрифта (после # написан хэш, который следует менять после каждого обновления файла шрифта, поскольку файл шрифта кэшируется браузером, и после обновления может не изменяться при загрузке страницы): @font-face { font-family: 'Font wordlearning'; font-style: normal; font-weight: 400; src: url("/app/modules/wordlearning/fonts/wordlearning.woff#001") format("woff");/**/ } .[имя класса шрифта] { font-family: 'Font wordlearning'; font-weight: 400; font-style: normal; } .[имя класса элемента]::before { content: "\F0000"; } Файл html (различные классы записываются через пробел; делаем span скрытым, а перед ним вставляем элемент шрифта, это осуществляет команда before, описанная в css):