Skip to content

Commit e1be13b

Browse files
committed
edit README
Signed-off-by: Alexandr <xescoder@gmail.com>
1 parent da6f938 commit e1be13b

File tree

1 file changed

+74
-6
lines changed

1 file changed

+74
-6
lines changed

README.md

+74-6
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,14 @@
33

44
Исходный код сервиса ["КЛАДР в облаке"] [1]
55

6-
Структура
6+
Технологии
7+
----------
8+
9+
* [Phalcon] [3]
10+
* [MongoDB] [4]
11+
* [Memcached] [5]
12+
13+
Общая структуктура
714
---------
815

916
* */apps/core* - Модуль сервиса [kladr-api.ru/api.php] [2]
@@ -15,12 +22,73 @@
1522
* */tests* - Функциональные тесты
1623
* */public*
1724

18-
Технологии
19-
----------
25+
Структура сервиса
26+
-----------------
27+
28+
* */apps/core/config/* - Файлы конфигурации сервиса
29+
* */apps/core/controllers/* - Контроллеры
30+
* */apps/core/models/* - Модели ODM
31+
* */apps/core/plugins/base/* - Базовые классы плагинов
32+
* */apps/core/plugins/general/* - Плагины
33+
* */apps/core/plugins/tools/* - Вспомогательные классы
34+
* */apps/core/services/* - Сервисы
35+
36+
Архитектура
37+
-----------
38+
39+
Архитектура сервиса построена на плагинах. Для того чтобы расширить функциональность
40+
надо всего-лишь реализовать плагин и подключить его в сервисе.
41+
42+
Пример:
43+
Добавим плагин возвращающий количество объектов в результате.
44+
45+
Добавил плагин CountPlugin.php в /apps/core/plugins/general/
46+
47+
`````php
48+
<?php
49+
50+
namespace Kladr\Core\Plugins\General {
51+
52+
use \Phalcon\Http\Request,
53+
\Phalcon\Mvc\User\Plugin,
54+
\Kladr\Core\Plugins\Base\IPlugin,
55+
\Kladr\Core\Plugins\Base\PluginResult;
56+
57+
class CountPlugin extends Plugin implements IPlugin
58+
{
59+
public function process(Request $request, PluginResult $prevResult)
60+
{
61+
if($prevResult->error){
62+
return $prevResult;
63+
}
64+
65+
$result = $prevResult;
66+
$result->result = count($result->result);
67+
return $result;
68+
}
69+
}
70+
}
71+
`````
72+
73+
Подключим плагин в /apps/core/Module.php
74+
75+
`````php
76+
// Register CountPlugin
77+
$di->set('count', function(){
78+
return new \Kladr\Core\Plugins\General\CountPlugin();
79+
});
80+
81+
// Setting api
82+
$di->setShared('api', function() use ($di) {
83+
$api = new Services\ApiService();
84+
$api->addPlugin($di->get('validate'));
85+
$api->addPlugin($di->get('find'));
86+
$api->addPlugin($di->get('findParents'));
87+
$api->addPlugin($di->get('count')); // add CountPlugin
88+
return $api;
89+
});
90+
`````
2091

21-
* [Phalcon] [3]
22-
* [MongoDB] [4]
23-
* [Memcached] [5]
2492

2593
Лицензия
2694
--------

0 commit comments

Comments
 (0)