что то ищешь тут паря?

вторник, 18 декабря 2012 г.

Теперь будет новый цикл статей про фреймворк Yii.Как я его учу.

И это первая статья.
Вообщем то что буду писать ниже это вольный перевод дефинитив гида по УИИ(так я его буду писать так как переключаться на инглишь облом)

Понеслась:

http://www.example.com/index.php?r=post/show&id=1
выполнился этот запрос.
1.скрипт создает апликаишн и запускает ее(инстанс)
2.аплик(так дальше буду называть) забирает детализированную
инфу о запросе через апликейшн компонент РЕКВЕСТ(выдирает из запроса)
3.с помощю УРЛ МАНАГЕРА аплик узнает какой должен быть контроллер
и какие экшн(действие)
For this example, the controller is post, which refers to the PostController class;
and the action is show, whose actual meaning is determined by the controller.
ну вы поняли.для этого примера контроллер ПОСТ а действие ШОУ
4.потом апликейшн создает инстанс контроллера чтоб обслужить реквест юзера
.Контроллер узнает что метод ШОУ ссылается на метод actionshow в контроллер классе.ПОтом
после того как контроллер узнал о экшне он применяет фильтры(разрешения,тесты).И только затеи если это
разрешено он выполняет действие
6.Экшн собственно читает модель ПОСТ ИД которого 1 из БД
7.ТАКЖЕ акшн рендерит вьюшку имя которой ШОУ в модели ПОСТ
8.ВЬЮХА читает и показывает атрибуты модели ПОСТ
9.ВЬЮХА выполняет какие то виджеты
10.ВЬЮХА рендерит результат в лейауте
11.Действие заканчивается после того как вьюха отрендерила и показала результат юзеру.





Что содержит первчинозагружаемый скрипт:
Входной скрипт:
// remove the following line when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);
// include Yii bootstrap file
require_once('path/to/yii/framework/yii.php');
// create application instance and run
$configFile='path/to/config/file.php';
Yii::createWebApplication($configFile)->run();

он сначала запускает первый запускной файл yii.php потом создает апликейшн инстанс и запускает его


дальше....

АПЛИКЕЙШН ПОПОБДРОБНЕЕ:
ЕГО ЗАДАЧА:Собрать побольше инфы о запросе и передать эту инфу контроллеру.
Также задача апликейшна держать в себе данные конфигурации апликейшн уровня.
ПОЭТОМУ аплик называется поправильноу front-controller


Апик обжект является инстансом синглтона,к синглтону может быть получен доступ из любого места посредством Yii::app().

1. Application Configuration

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

Конф файл:это массив ключ-значение

Для примера массив задает имя и контроллер по умолчанию для приложения

array(
'name'=>'Yii Framework',
'defaultController'=>'site',
)

Конф обычно хранится как защищенный скрипт
(e.g. protected/config/main.php)
и для получения данных он вконце возвращает их
return array(...);

чтоб применить конф к апику мы в ентри скрипте даем ему конф файл как параметр

To apply the configuration, we pass the configuration file name as a parameter to the application's constructor, or to Yii::createWebApplication() in the following manner, usually in the entry script:
$app=Yii::createWebApplication($configFile);

вот так вот

2. Application Base Directory

Ну тут понятно .можно подредактить через basePath property in the application configuration.
но в идеале оно должно находиться в протектед.чтоб не лезли все кто не нада

3. Application Components

функциональность может быть переделана как хочешь блабла бла.у аплика есть разные компоненты которыми он может пользоваться.Например CUrlManager and CHttpRequest components.
с помощю этих компонент он анализирует запрос юзера.

Для того чтоб компоненты работали их нада конфигурировать через подмассив компоненты в конф скрипте:
Тут для примера приводится мемкеш которому дали задание работаеть через несколько мемкеш серверов:

array(
......
'components'=>array(
......
'cache'=>array(
'class'=>'CMemCache',
'servers'=>array(
array('host'=>'server1', 'port'=>11211, 'weight'=>60),
array('host'=>'server2', 'port'=>11211, 'weight'=>40),
),
),
),
)

Чтоб добраться до компонента аплика нужно Yii::app()->ComponentID тоесть  например
Yii::app()->cache).Тоесть тут класс УИИ потом генерится апликация с помощю функции (метод класса)АПП() а потом еще и метод кеш сверху

Подсказка: По умолчанию, компоненты приложения создаются по требованию. Это означает, что компонент приложения не могут быть созданы на всех, если он не доступен во время запроса пользователя. В результате, общая производительность может быть не пострадает, даже если приложение настроено со многими компонентами. Некоторые компоненты приложения (например, CLogRouter), возможно, должны быть созданы независимо от того, используются они или нет. Чтобы сделать это, укажите их идентификаторы в преднагрузки собственности приложений.

4. Core Application Components

Yii предопределяет набор компонентов ядра, которые предоставляют возможности общего веб-приложениями. Например, компонент request используется для сбора информации о запросе пользователя и предоставлять такую ​​информацию, как просил URL и куки. При настройке свойств этих основных компонентов, мы можем изменить поведение по умолчанию почти каждый компонент Yii.


Вот список предекларированных компонентов по умолчанию:
assetManager: CAssetManager - управляет публицированием приватных файлов
authManager: CAuthManager - управляет доступам по ролям(кароче вы поняли.права)
cache: CCache - кэш(вы должны указать конкретный класс CMemCache, CDbCache)
clientScript: CClientScript  - руководит скриптом клиента(яваскрипт цсс)
coreMessages: CPhpMessageSource  это я непонял.сообщения ядра провайдит.ХЗ
db: CDbConnection  ну тут понятно.доступ к дп.для этого нужно сконфигурировать коннекшин стринг
errorHandler: CErrorHandler  анкот(несловленные) ерроры(пхп)
format: CFormatter форматит дату для предоставления
messages: CPhpMessageSource  ОПЯТЬ не понял.provides translated messages used by the Yii application.что значит месседжи?переведенные темболее.неясно пока.
request: CHttpRequest инфа связанная с запросами хттп(вынимает все что в них наверное)
securityManager: CSecurityManager - сервис который хеширует или шифрует(тоесть ненада теперь в самой бж шифровать.ок)
session: CHttpSession функционал связанный с сессией
statePersister: CStatePersister  это непоянтно.сохраняет глоюальные состояния че то такое
provides the mechanism for persisting global state.

urlManager: CUrlManager парсит урлы
user: CWebUser несет инфу о юзере(права все такео)
themeManager: CThemeManager ТУТ темы даже есть.нихуясебе


5. Application Life Cycle ¶
вот вам и цикл приложиния.ну чтож будем переводить
При обработке запроса пользователя, приложение будет проходить следующий цикл жизни:

Предварительно инициализации приложения с CApplication :: PreInit ();

Установите автозагрузчик класса и обработки ошибок;

Зарегистрируйтесь основных компонентов приложения;

Загрузка конфигурации приложения;

Инициализация приложения с CApplication :: Init ()

Регистрация поведение приложений;

Загрузите статических компонентов приложения;

Поднимите OnBeginRequest события;

Обработка запроса пользователя:

Сбор информации о запросе;

Создание контроллера;

Запуск контроллера;

Поднимите onEndRequest события;

КАРОЧЕ В ОБЩЕМ АПЛИК ПОДНИМАЕТСЯ САМ.ПАРСИТ ЗАПРОС.СОЗДАЕТ И ЗАПУСКАЕТ КОНТРОЛЛЕР.и потом собственно ее и генерит ендреквест.

ПОНЕСЛАСЬ ДАЛЬШЕ:

КОНТРОЛЛЕР:
это инстанс  CController или класса который расширяет  CController.вообщем вы поняли
создан апликом когда пользователь запрашивает его
он производит запрашиваемое действие,по итогу берет данные из модели и рендерит вью.
action это самая простая форма контроллера.это метод класса контроллера который начинаетс я на  action

НУ ЧТОЖ ПРОДОЛЖИМ ПОПОДРОБНЕЕ

У контроллера есть действие по умолчанию


ВООБЩЕМ НАШЕЛ РУКОВОДСТВО ПО РУССКИ

http://yiiframework.ru/doc/guide/ru/

ТЕПЕРЬ НАХУЙ ПЕРЕВОД только буду писать про сам смысл как я делаю приложение



Комментариев нет:

Отправить комментарий