一個簡單的 Hello World

使用 composer,在要安裝應用程式的目錄中執行以下命令:composer create-project zendframework/zend-expressive-skeleton expressive-skeleton

在安裝過程中,將要求你做出各種決定。

  1. 對於預設安裝問題,請說 no(n);
  2. 對於路由器,讓我們使用 Aura Router(#1);
  3. 對於容器,讓我們使用 Zend ServiceManager(#3);
  4. 對於模板,讓我們使用 Zend View(#3);
  5. 最後,對於錯誤處理程式,讓我們使用 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