一个简单的 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