PHP code example of charlesportwoodii / yii2-psr7-bridge
1. Go to this page and download the library: Download charlesportwoodii/yii2-psr7-bridge 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/ */
charlesportwoodii / yii2-psr7-bridge example snippets
#!/usr/bin/env php
ini_set('display_errors', 'stderr');
// Set your normal YII_ definitions
defined('YII_DEBUG') or define('YII_DEBUG', true);
// Alternatives set this in your rr.yaml file
//defined('YII_DEBUG') or define('YII_DEBUG', \getenv('YII_DEBUG'));
defined('YII_ENV') or define('YII_ENV', 'dev');
// Alternatives set this in your rr.yaml file
//defined('YII_ENV') or define('YII_ENV', \getenv('YII_ENV'));
quire __DIR__ . '/../config/web.php';
$application = (new \yii\Psr7\web\Application($config));
// Handle each request in a loop
try {
while ($request = $psr7->waitRequest()) {
if (($request instanceof Psr\Http\Message\ServerRequestInterface)) {
try {
$response = $application->handle($request);
$psr7->respond($response);
} catch (\Throwable $e) {
$psr7->getWorker()->error((string)$e);
}
if ($application->clean()) {
$psr7->getWorker()->stop();
return;
}
}
}
} catch (\Throwable $e) {
$psr7->getWorker()->error((string)$e);
}
$response = \Middlewares\Utils\Dispatcher::run([
// new Middleware,
// new NextMiddleware, // and so forth...
function($request, $next) use ($application) {
return $application->handle($request);
}
], $request);
// rr response
$psr7->respond($response);
public function behaviors()
{
return \array_merge(parent::behaviors(), [
[
'class' => \yii\Psr7\filters\auth\MiddlewareAuth::class,
'attribute' => 'username',
'middleware' => (new \Middlewares\BasicAuthentication(
Yii::$app->user->getUsers() // Assumes your `IdentityInterface` class has a method call `getUsers()` that returns an array of username/password pairs
/**
* Alternatively, just a simple array for you to map back to Yii2
*
* [
* 'username1' => 'password1',
* 'username2' => 'password2'
* ]
*/
))->attribute('username')
]
]);
}
public function behaviors()
{
return \array_merge(parent::behaviors(), [
[
'class' => \yii\Psr7\filters\MiddlewareActionFilter::class,
'middlewares' => [
// Yii::$app->request->getAttribute('client-ip') will return the client IP
new \Middlewares\ClientIp,
// Yii::$app->response->headers['X-Uuid'] will be set
new \Middlewares\Uuid,
]
]
]);
}
public function behaviors()
{
return \array_merge(parent::behaviors(), [
[
'class' => \yii\Psr7\filters\MiddlewareActionFilter::class,
'middlewares' => [
function ($request, $next) {
// Yii::$app->request->getAttribute('foo') will be set to `bar`
// Yii::$app->response->headers['hello'] will be set to `world`
return $next->handle(
$request->withAttribute('foo', 'bar')
)->withHeader('hello', 'world')
}
]
]
]);
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.