Hooks
ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Pllano\Hooks\Hook
- Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ
ΠΊΠ»Π°ΡΡΠΎΠ² Π² Π½Π°ΡΠ°Π»Π΅ ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΈΠ»ΠΈ Π² Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ°, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΡΡ ΠΈΠ»ΠΈ Π±ΡΠ°ΡΡ ΠΈΠ· Π½Π΅Π΅ Π΄Π°Π½Π½ΡΠ΅ Π±Π΅Π· ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ. ΠΡΠΎ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±Π΅Π· Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° Π² ΠΊΠΎΠ΄ Π²Π°ΡΠ΅ΠΉ App. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Ρ
ΡΠΊ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΊΠΎΠ³Π΄Π° Π΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Pllano\Hooks\Hook Π²Π·ΡΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Ρ
ΡΠΊΠ° ΠΈ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΈΡ
Ρ ΡΠ΅ΠΊΡΡΠΈΠΌΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ. ΠΡΠ»ΠΈ Π΅ΡΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ Ρ
ΡΠΊ. ΠΠ°Π΄Π°ΡΠ° Ρ
ΡΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ²ΠΎΡ ΠΌΠΈΡΡΠΈΡ., (*1)
ΠΠ°ΠΊ ΠΈ Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ? ΠΡΠΈΠΌΠ΅ΡΡ:
- ΠΡ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΈ Π²Π΅ΡΡΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΏΠΎΡΠ΅ΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΡΠ°ΠΉΡΠ°. ΠΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ Π² ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π±Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Request ΠΎΡΠ΄Π°Π²Π°Ρ ΠΈΡ
Π½Π°Π·Π°Π΄ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
- ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΏΡΠΈΡ
ΠΎΠ΄ΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· POST Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Ρ
ΡΠΊ ΠΈ Π½Π°ΡΠ΅Π»ΠΈΠ²Π°Π΅ΡΠ΅ Π΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° POST Π·Π°ΠΏΡΠΎΡΡ. ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° $post = $request->getParsedBody(); ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΠ΅ ΠΈΡ
ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΌΠΈ ΠΈ ΠΎΡΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΠΎΡ Π»ΠΈΡΠ½Π΅Π³ΠΎ.
- ΠΡ Ρ
ΠΎΡΠΈΡΠ΅ Π²Π΅ΡΡΠΈ ΡΠ΅ΡΠ½ΡΠΉ/Π±Π΅Π»ΡΠΉ ΡΠΏΠΈΡΠΊΠΈ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ Π·Π°ΡΠΈΡΡ ΠΎΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
DDoS. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΠΏΠΈΡΠ°ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΎΡΡΠ΅ΠΊΠ°ΡΡΠΈΠΉ IP Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΡΠ°ΠΉΡΡ. Π’Π°ΠΊΠΆΠ΅ Π½ΡΠΆΠ΅Π½ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ Π½Π° Π²Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅ Π²ΡΠ΅ ΡΡΠΆΠ΅Π»ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΈ ΡΠΎΠΎΠ±ΡΠ°ΡΡ Π²Π°ΠΌ ΠΎ Π½ΠΈΡ
Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΡ
Π² ΠΊΠ΅Ρ ΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ².
-
Hooks - ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΡΠ²Π°Π΅Ρ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡ:
-
Request
Π² GET
ΠΈ POST
Π·Π°ΠΏΡΠΎΡΠ°Ρ
-
Response
Π² GET
ΠΈ POST
Π·Π°ΠΏΡΠΎΡΠ°Ρ
-
View
- ΠΠ°ΡΡΠΈΠ² Π΄Π»Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°ΡΠΎΡΠ° Π² GET
Π·Π°ΠΏΡΠΎΡΠ°Ρ
-
Render
- ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π° Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠ° - Π² GET
Π·Π°ΠΏΡΠΎΡΠ°Ρ
-
Callback
Π² POST
Π·Π°ΠΏΡΠΎΡΠ°Ρ
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Hook Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Hook ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ΅Π· param Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
- ΠΠ°ΡΡΠΈΠ²ΠΎΠΌ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ $param = [];
- ΠΠ· ΡΠ°Π»Π° hooks.json
, (*2)
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Hook
-
print
- ΠΡΠ²Π΅ΡΡΠΈ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ 1
ΠΈΠ»ΠΈ Π²ΡΠΊΠ»ΡΡΠΈΡΡ 0
-
vendor
- ΠΠΎΠ»Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°
-
query
- Π·Π°ΠΏΡΠΎΡ ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ GET
POST
ΠΈΠ»ΠΈ all
Π½ΠΎΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ.
-
render
- ΡΠ°Π±Π»ΠΎΠ½ Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠ° index.twig
ΠΈΠ»ΠΈ all
ΠΈΠ»ΠΈ 0
-
url
- ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ url Ρ /
ΠΈΠ»ΠΈ all
ΠΈΠ»ΠΈ 0
(ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ Π΄ΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ *
ΠΏΡΠΈΠΌΠ΅Ρ /article-*.html
)
-
routers
- Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΡΡΠ΅ΡΠ° index
, article
ΠΈΠ»ΠΈ 0
ΠΈΠ»ΠΈ all
-
resource
- ΡΠ°Π±Π»ΠΈΡΠ° ΠΈΠ»ΠΈ ΡΠ΅ΡΡΡΡ ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ user
ΠΈΠ»ΠΈ all
ΠΈΠ»ΠΈ 0
-
app
- ΡΠΈΠΏ App - site
admin
- ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π°Π·Π²Π°Π½ΠΈΡ render
ΠΌΠΎΠ³ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ ΠΈΠ»ΠΈ all
Π½ΠΎΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ.
-
state
- ΡΡΠ°ΡΡΡ 0
- Π½Π΅ Π°ΠΊΡΠΈΠ²Π΅Π½ ΠΈΠ»ΠΈ 1
- Π°ΠΊΡΠΈΠ²Π΅Π½
-
config
- ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ {ΠΌΠ°ΡΡΠΈΠ²}
ΠΈΠ»ΠΈ 0
{
"hooks": {
"print": 1,
"vendor": {
"demo-hook-index-get": {
"vendor": "\\Pllano\\Hooks\\HookIndexGet",
"query": "GET",
"render": 0,
"routers": 0,
"resource": 0,
"url": "all",
"app": "site",
"state": 1,
"config": 0
},
"demo-hook-all": {
"vendor": "\\Pllano\\Hooks\\HookAll",
"query": "all",
"render": "all",
"routers": 0,
"resource": 0,
"url": 0,
"app": "site",
"state": 0,
"config": 0
},
"security": {
"vendor": "\\Pllano\\Hooks\\Security",
"query": "all",
"render": "all",
"routers": 0,
"resource": 0,
"url": 0,
"app": "site",
"state": 0,
"config": 0
}
}
}
}
ΠΠ°ΡΠΊΠ°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
Hooks
Π ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ ΠΈΠ΄Π΅Ρ Π΄Π²Π° ΠΊΠ°ΡΠΊΠ°ΡΠ° Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π΄ΠΎΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΈΡ
ΠΊΠ»Π°ΡΡΠΎΠ² Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
- ΠΠ»Π°ΡΡ HookIndexGet
- ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ GET
Π·Π°ΠΏΡΠΎΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π±Π»ΠΎΠ½ render
Π½Π° hooks.html
ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ Hooks ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
- ΠΠ»Π°ΡΡ HookAll
- ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, (*3)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ GET
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Pllano\Hooks\Hook;
$app->get('/', function (Request $request, Response $response, array $args) {
// ΠΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
$param = [];
$query = 'GET';
$app = 'site';
$routers = null;
// ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² [] Π²ΠΎΠ·ΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° hooks.json
// ΠΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Hooks Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ
$hook = new Hook($param);
$hook->http($request, $response, $args, $query, $app, $routers);
$request = $hook->request();
$args = $hook->args();
$hook->setResource('user');
// ΠΠ°ΡΠ°Π»ΠΎ Π²Π°ΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
$view = []; // ΠΠ°ΡΡΠΈΠ² Π΄Π»Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°ΡΠΎΡΠ°
$render = 'index.twig'; // ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΡΠ°Π±Π»ΠΎΠ½Π°
// ΠΠΎΠ½Π΅Ρ Π²Π°ΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
// ΠΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Hooks Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ
$hook->get($view, $render);
// ΠΠΎΠ΄ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΎΡΠ²Π΅Ρ
$response = $hook->response();
// ΠΠ°ΠΏΠΈΡΡ Π² Π»ΠΎΠ³
$this->logger->info($hook->logger());
// ΠΡΠ΄Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°ΡΠΎΡΡ
return $this->view->render($hook->render(), $hook->view());
});
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ POST
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Pllano\Hooks\Hook;
$app->post('/post', function (Request $request, Response $response, array $args) {
// ΠΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
$param = [];
// ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² [] Π²ΠΎΠ·ΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° hooks.json
// ΠΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Hooks Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ
$hook = new Hook($param);
$hook->http($request, $response, $args, 'POST', 'site');
$request = $hook->request();
$args = $hook->args();
// ΠΠ°ΡΠ°Π»ΠΎ Π²Π°ΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
$callback = []; // ΠΠ°ΡΡΠΈΠ² Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΡΠ²Π΅ΡΠ°
// ΠΡΠ²ΠΎΠ΄ΠΈΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ
$response->withStatus(200);
$response->withHeader('Content-type', 'application/json');
// ΠΠΎΠ½Π΅Ρ Π²Π°ΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
// ΠΠ°ΠΏΠΈΡΡ Π² Π»ΠΎΠ³
$this->logger->info($hook->logger());
// ΠΠΎΠ΄ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΎΡΠ²Π΅Ρ
$response = $hook->response();
// ΠΡΠ²ΠΎΠ΄ΠΈΠΌ json
echo json_encode($hook->callback($callback));
});
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Composer
{
"require": {
"pllano/hooks": "~1.0.1"
}
}
{
"require": [{
"namespace": "Pllano\\Hooks",
"dir": "/pllano/hooks/src",
"link": "https://github.com/pllano/hooks/archive/master.zip",
"git": "https://github.com/pllano/hooks",
"name": "hooks",
"version": "master",
"vendor": "pllano",
"state": "1",
"system_package": "1"
}, {
"namespace": "Psr\\Http\\Message",
"dir": "/psr/http-message/src",
"link": "https://github.com/php-fig/http-message/archive/1.0.zip",
"git": "https://github.com/php-fig/http-message",
"name": "http-message",
"version": "1.0",
"vendor": "psr",
"state": "1",
"system_package": "1"
}
]
}