一個簡單的 Hello World
使用 composer,在要安裝應用程式的目錄中執行以下命令:composer create-project zendframework/zend-expressive-skeleton expressive-skeleton
。
在安裝過程中,將要求你做出各種決定。
- 對於預設安裝問題,請說 no(
n
); - 對於路由器,讓我們使用 Aura Router(#
1
); - 對於容器,讓我們使用 Zend ServiceManager(#
3
); - 對於模板,讓我們使用 Zend View(#
3
); - 最後,對於錯誤處理程式,讓我們使用 Whoops(#
1
)。
安裝完成後,讓自己進入根目錄 expressive-skeleton
,啟動內建的 PHP CLI 伺服器:php -S 0.0.0.0:8080 -t public public/index.php
。使用瀏覽器訪問 http:// localhost:8080 / ,你的應用程式現在應該已啟動並執行。
讓我們配置一個新的中介軟體的新路徑。首先,在 config/autoload/routes.global.php
中開啟路由器配置檔案並新增以下行:
<?php
return [
'dependencies' => [
...
],
'routes' => [
[
'dependencies' => [
'invokables' => [
...
],
'factories' => [
...
// Add the following line
App\Action\HelloWorldAction::class => App\Action\HelloWorldFactory::class,
],
],
],
// Following lines should be added
[
'name' => 'hello-world',
'path' => '/hello-world',
'middleware' => App\Action\HelloWorldAction::class,
'allowed_methods' => ['GET'],
],
],
];
將以下內容放入 src/App/Action/HelloWorldFactory.php
:
<?php
namespace App\Action;
use Interop\Container\ContainerInterface;
use Zend\Expressive\Template\TemplateRendererInterface;
class HelloWorldFactory
{
public function __invoke(ContainerInterface $container)
{
$template = ($container->has(TemplateRendererInterface::class))
? $container->get(TemplateRendererInterface::class)
: null;
return new HelloWorldAction($template);
}
}
然後,這個內容在 src/App/Action/HelloWorldAction.php
:
<?php
namespace App\Action;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Zend\Diactoros\Response\HtmlResponse;
use Zend\Diactoros\Response\JsonResponse;
use Zend\Expressive\Template;
use Zend\Expressive\Plates\PlatesRenderer;
use Zend\Expressive\Twig\TwigRenderer;
use Zend\Expressive\ZendView\ZendViewRenderer;
class HelloWorldAction
{
private $template;
public function __construct(Template\TemplateRendererInterface $template = null)
{
$this->template = $template;
}
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next = null)
{
$data = [];
return new HtmlResponse($this->template->render('app::hello-world'));
}
}
然後,最後,簡單地將以下內容放入 templates/app/hello-world.phtml
:
<?php echo 'Hello World'; ?>
我們完了 ! 導航到 http:// localhost:8080 / hello-world ,然後對 Zend Expressive 說 hi
!