Инструкция по пользованию Фреймворком
Общее описание фреймворка
Контроллер – это то, где реализовываются алгоритмы приложения (соединение и реализация представления – это одна из функций). Контроллер – часть программы, в которой реализуется прикладная задача (основные алгоритмы приложения). Здесь контроллер выполнен в виде действий: классы действий представляют из себя контроллер
Пространство имен нужно для того, чтобы как-то отнести то что написано в файле к модулю. Есть пространство имен фреймворка, а есть пространство имен приложения (по большей части имеется в приложении, в нем указывается пространство имен модулей). После new (при создании экземпляра класса): 1) указывается пространство имен\класс или: 2) указывается класс, а перед этим указывается use и в нем пространство имен и конкретный класс (т.е. полный путь). Пример: use app\modules\index\pageModel; это означает, что если далее в коде встречается pageModel то будет использоваться именно тот, который описан в папке <папка приложения>\modules\index\model
Описание класса действия
<URL>/<module>.<action>.<?actionFunction> – запрос в адресной строке браузера
- Если <module>.<action>, то выполняется ф-ция perform текущего action. В функции perform - мы можем писать все что угодно, что хотим, чтобы выполнилось на сервере. Это действие, а действия на сервере могут быть совершенно разные
- Если <module>.<action>.<?actionFunction>, то дополнительная указанная ф-ция, которая public (чтобы можно было запросить обозревателем)
\<app>\app.php файл с описанием того, какое действие выполнять при запросе корня сайта (главный файл приложения)
<actoin>.php такой файл с описанием класса действия создать в папке \<app>\modules\<module>\action (подключать файл действия никуда не нужно, фреймворк сам его подключит, когда я запрошу соотв. адрес)
namespace <app>\modules\<module> так описать пространство имен (модуль – часть приложения, например: модуль авторизации, регистрации и т.д.). <app> – пространство (имен) приложения; <module> – подпространство (имен) модуля. Пояснение необходимости пространства имен: можно назвать класс каким-то именем. подключаешь стороннюю библиотеку, а там класс с таким же именем: возникает конфликт. Чтобы этого конфликта не существовало, придумали разграничить их, создав пространство, а имя этого пространства пишется вначале файла с описанием класса. в программе обращаться к тому или иному классу можно, указывая перед ним пространство имен. пространство имен - некоторое название. В пространстве имен можно писать любую уникальную комбинацию символов, однако чтобы было понятнее, для удобства указываем путь к файлу с классом (но это не путь к файлу, это принадлежность к пространству модуля)
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-><переменная> или $<переменная> доступна такая запись именно в шаблоне (обеспечивается фреймворком): <переменная> передаётся из контроллера в шаблон, и это то, как к этой переменной можно обратиться в шаблоне
F::prp(<переменная>,<true|false>); функция отображает <переменная> (например массив $_SERVER, имя текущего класса __CLASS__, , имя текущей функции __FUNCTION__)
Uri::appUri('/wordlearning/js/lang.js'); Формирует абсолютный путь к данному файлу, добавляет имя хоста, возможно подпапку приложения, если это необходимо, т.е. делает url-адрес.
public function <имя функции>(<тип переменной> <имя переменной> = <значение по умолчанию>)
$_params доступна в любом action, в ней массив $_REQUEST (но может быть и другая переменная, для того, чтобы переопределив ее в одном месте, она везде получала другие значения)
$this-> это переменная текущего объекта класса
$this->dbsql() возвращает объект для работы с базой данных
Описание класса модели данных
\<app>\modules\<module>\model\page.php файл с классом модели данных для представления страницы (заполняем теми переменными, которые нужны)
Основы
Класс может быть статическим: если не собираюсь создавать объект, а просто требуется сгруппировать свойства и методы. И там, где нужен функционал: можно обратиться в методу, не создавая объект класса. Обращение к свойству статического класса: <статический класс>::<свойство>; обращение к методу статического класса: <статический класс>::<метод>(<фактические параметры>);