Symfony2.8作为MicroFramework(MicroKernel)入门

时间:2015-12-03 22:30:55

标签: php symfony

所以我想通过使用其新功能Symfony as a Microframework来试用这个新版本的Symfony(2.8.0)。

Symfony网站上的教程非常简单。但是,我无法开始使用它。我仍然可以使用默认登录网页。

我已经按照食谱的每个步骤进行操作,也就是说设置./app/MicroKernel.php 。该文件的内容与第一个 Hello World 应用程序示例中提供的代码完全相同,因此我不会在此处粘贴它。

我还使用以下代码更新了 ./web/app.php ,根据食谱:

<?php

use Symfony\Component\HttpFoundation\Request;

$loader = require __DIR__.'/../app/autoload.php';
require_once __DIR__.'/../app/MicroKernel.php';

$app = new MicroKernel('prod', false);
$app->loadClassCache();

$app->handle(Request::createFromGlobals())->send();

我也清除了缓存:

$ php app/console cache:clear --env=prod
 // Clearing the cache for the prod environment with debug false
 [OK] Cache for the "prod" environment (debug=false) was successfully cleared.

我的虚拟主机已正确配置:

<VirtualHost *:80>
    ServerAdmin postmaster@domain.com
    DocumentRoot "c:/wamp/www/steve-david.sf2/web/"
    ServerName "steve-david.sf2"

  <Directory "c:/wamp/www/steve-david.sf2/web/">
    AllowOverride All
    Require local
  </Directory>
</VirtualHost>

但是,当我访问http://steve-david.sf2/时,我会登陆欢迎使用Symfony2.8.0 默认网页:

enter image description here

我没有对使用composer下载的应用程序进行任何其他更改。

我在这里缺少什么?我是否必须更改./src/AppBundle/中的任何内容?缺乏有关此新功能的文档也无济于事。

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

您使用php app/console清除了缓存 - 而且 - 从我所看到的 - 您开始使用Symfony标准版。这意味着console文件在默认AppKernel中运行命令而不是新的MicroKernel。转到并修改该文件,并将AppKernel替换为MicroKernel。然后,运行clear:cache命令。只是为了确定,删除app/cache/*目录的内容。

未在&#34; cookbook&#34;中说明。关于这一点,因为它不是&#34;如何将Symfony标准版改为微框架的教程&#34;但只是&#34;如何使用MicroKernelTrait&#34;。

从Symfony标准版开始,您就拥有MicroKernel不需要的文件。只需删除AppKernel.php,AppCache.php即可。根本不需要app/config目录。 ./src/AppBundle/也是多余的。

而不是Symfony Standard Edition ,您应该只创建一个空目录,然后在那里运行composer require symfony/symfony。然后在教程中创建app/MicroKernel.phpweb/app.php。您还需要具有以下内容的app/autoload.php文件(在起始示例中不需要这些关于注释的行,但您可能稍后需要它们 - 如果没有注释支持,您可以跳过创建此文件并包含{{1}直接)文件:

vendor/autoload.php

就是这样。它应该工作。