pavlakis/slim-cli

Making a mock GET request through the CLI and enabling the same application entry point on CLI scripts.

1.1 2018-10-22 22:32 UTC

README

Build Status Total Downloads Latest Stable Version codecov PHPStan

Slim 3 Framework CLI Request Middleware

This middleware will transform a CLI call into a GET Request.

Add it with composer

composer require pavlakis/slim-cli

Pass the parameters in this order

route / method / query string

php public/index.php /status GET event=true

Add it in the middleware section of your application

$app->add(new \pavlakis\cli\CliRequest());

Adding custom parameters:

$app->add(
	new \pavlakis\cli\CliRequest(
		new EnvironmentProperties(['SERVER_PORT' => 9000])
	)
);

Pass a route to test it with


$app->get('/status', 'PHPMinds\Action\EventStatusAction:dispatch')
    ->setName('status');

Check you're only using a CLI call

final class EventStatusAction
{
    ...

    public function dispatch(Request $request, Response $response, $args)
    {

        // ONLY WHEN CALLED THROUGH CLI
        if (PHP_SAPI !== 'cli') {
            return $response->withStatus(404)->withHeader('Location', '/404');
        }

        if (!$request->getParam('event')) {
            return $response->withStatus(404)->withHeader('Location', '/404');
        }

        ...

    }

}

Or we can use a PHP Server Interface (SAPI) Middleware to do the SAPI check adding by adding it to a route:

// By default returns a 403 if SAPI not part of the whitelist
$app->get('/status', 'PHPMinds\Action\EventStatusAction:dispatch')
    ->add(new Pavlakis\Middleware\Server\Sapi(["cli"]))

Credits

Based on Bobby DeVeaux's (@bobbyjason) Gulp Skeleton