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