Various Yii 3.0 related documentation
Entry scripts are the first step in the application bootstrapping process. An application (either Web application or console application) has a single entry script. End users make requests to entry scripts which instantiate application instances and forward the requests to them.
Entry scripts for Web applications must be stored under Web accessible directories so that they
can be accessed by end users. They’re often named as index.php
, but can also use any other names,
provided Web servers can locate them.
Entry script for console application is ./yii
.
Entry scripts mainly perform the following work with the help of ApplicationRunner
:
Application
to handle and get a response from it.The following is the code in the entry script for the application template:
<?php
declare(strict_types=1);
use App\ApplicationRunner;
// PHP built-in server routing.
if (PHP_SAPI === 'cli-server') {
// Serve static files as is.
if (is_file(__DIR__ . $_SERVER['REQUEST_URI'])) {
return false;
}
// Explicitly set for URLs with dot.
$_SERVER['SCRIPT_NAME'] = '/index.php';
}
require_once dirname(__DIR__) . '/vendor/autoload.php';
$runner = new ApplicationRunner();
// Development mode:
$runner->debug();
// Run application:
$runner->run();
Similarly, the following is the code for the entry script of a console application:
#!/usr/bin/env php
<?php
declare(strict_types=1);
use Psr\Container\ContainerInterface;
use Yiisoft\Config\Config;
use Yiisoft\Di\Container;
use Yiisoft\Di\ContainerConfig;
use Yiisoft\Yii\Console\Application;
use Yiisoft\Yii\Console\Output\ConsoleBufferedOutput;
define('YII_ENV', getenv('env') ?: 'production');
require_once 'vendor/autoload.php';
$config = new Config(
__DIR__,
'/config/packages',
);
$containerConfig = ContainerConfig::create()
->withDefinitions($config->get('console'))
->withProviders($config->get('providers-console'));
$container = new Container($containerConfig);
/** @var ContainerInterface $container */
$container = $container->get(ContainerInterface::class);
$application = $container->get(Application::class);
$exitCode = 1;
try {
$application->start();
$exitCode = $application->run(null, new ConsoleBufferedOutput());
} catch (\Error $error) {
$application->renderThrowable($error, new ConsoleBufferedOutput());
} finally {
$application->shutdown($exitCode);
exit($exitCode);
}
For alternative runtimes such as RoadRunner or Swoole, special entry scripts should be used. See: