PHP code example of baagee / php-onion
1. Go to this page and download the library: Download baagee/php-onion library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
baagee / php-onion example snippets
/**
* Class ReturnJson
*/
class ReturnJson extends \BaAGee\Onion\Base\LayerAbstract
{
/**
* @param Closure $next
* @param $data
* @return mixed|void
*/
protected function handler(Closure $next, $data)
{
print "开始 " . __CLASS__ . " 逻辑" . PHP_EOL;
$ret = $next($data);
print "结束 " . __CLASS__ . " 逻辑" . PHP_EOL;
echo json_encode($ret, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . PHP_EOL;
}
}
/**
* Class CatchError
*/
class CatchError extends \BaAGee\Onion\Base\LayerAbstract
{
/**
* @param Closure $next
* @param $data
* @return array|mixed
*/
protected function handler(Closure $next, $data)
{
print "开始 " . __CLASS__ . " 逻辑" . PHP_EOL;
$ret = [
'code' => 0,
'message' => ''
];
try {
$data .= __CLASS__ . '; ';
$ret['data'] = $next($data);
} catch (Throwable $e) {
$ret = [
'code' => $e->getCode(),
'message' => $e->getMessage()
];
}
print "结束 " . __CLASS__ . " 逻辑" . PHP_EOL;
$ret['request_id'] = time();
return $ret;
}
}
/**
* Class BLogic
*/
class BLogic extends \BaAGee\Onion\Base\LayerAbstract
{
/**
* @param Closure $next
* @param $data
* @return mixed
*/
protected function handler(\Closure $next, $data)
{
print "开始 " . __CLASS__ . " 逻辑" . PHP_EOL;
$data .= __CLASS__ . '; ';
$ret = $next($data);
print "结束 " . __CLASS__ . " 逻辑" . PHP_EOL;
return $ret;
}
}
/**
* Class ALogic
*/
class ALogic extends \BaAGee\Onion\Base\LayerAbstract
{
/**
* @param Closure $next
* @param $data
* @return mixed
*/
protected function handler(Closure $next, $data)
{
print "开始 " . __CLASS__ . " 逻辑" . PHP_EOL;
$data .= __CLASS__ . "; ";
// throw new Exception(__CLASS__ . ' Exception', 100);
$ret = $next($data);
print "结束 " . __CLASS__ . " 逻辑" . PHP_EOL;
return $ret;
}
}
// 输入的数据
$input = 'input data; ';
// 经过的层 注意顺序,从前往后执行,然后从后往前一层一层返回
$through = [
ReturnJson::class,
CatchError::class,
ALogic::class,
BLogic::class
];
// 开始
(new \BaAGee\Onion\Onion())->send($input)->through($through)->then(function ($input) {
return [
'time' => time(),
'input' => $input
];
});