Php 开始使用Symfony2.8作为微框架(微内核)

Php 开始使用Symfony2.8作为微框架(微内核),php,symfony,Php,Symfony,因此,我想尝试一下Symfony 2.8.0的新版本,使用它的一个新功能: Symfony网站上的教程非常简单。然而,我无法开始。我仍然得到默认的登陆网页 我遵循了食谱的每一个步骤,即设置./app/MicroKernel.php。该文件的内容与第一个Hello World应用程序示例中提供的代码完全相同,因此我不会将其粘贴到这里 根据食谱,我还使用以下代码更新了./web/app.php: <?php use Symfony\Component\HttpFoundation\Reque

因此,我想尝试一下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();
我的虚拟主机已正确配置:

<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默认网页:

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

我错过了什么?我必须在./src/AppBundle/中更改任何内容吗?缺少关于这个新特性的文档也没有帮助


谢谢你的帮助

您使用php app/console清除了缓存-从我看到的情况来看,您是从Symfony Standard Edition开始的。这意味着控制台文件在默认的AppKernel中运行命令,而不是在新的微内核中运行命令。去编辑那个文件,用微内核替换AppKernel。然后,运行clear:cache命令。为了确保安全,请删除app/cache/*目录的内容

烹饪书中没有说明这一点,因为它不是如何将Symfony标准版更改为微框架的教程,而是如何使用微内核

从Symfony标准版开始,您就拥有了微内核不需要的文件。只需删除AppKernel.php、AppCache.php。app/config目录也完全不需要。./src/AppBundle/也是冗余的

您应该创建一个空目录,并在那里运行composer require Symfony/Symfony,而不是Symfony标准版。然后创建app/MicroKernel.php和web/app.php,如本教程所示。您还需要包含以下内容的app/autoload.php文件这些关于注释的行在开始示例中不需要,但您以后可能需要它们-如果没有注释支持,您可以直接跳过创建此文件并包括vendor/autoload.php文件:

<?php
use Doctrine\Common\Annotations\AnnotationRegistry;
use Composer\Autoload\ClassLoader;

error_reporting(error_reporting() & ~E_USER_DEPRECATED);

$loader = require __DIR__.'/../vendor/autoload.php';
AnnotationRegistry::registerLoader(array($loader, 'loadClass'));

return $loader;

就这样。它应该可以正常工作。

您使用php app/console清除了缓存-并且-从我看到的情况来看-您从Symfony Standard Edition开始。这意味着控制台文件在默认的AppKernel中运行命令,而不是在新的微内核中运行命令。去编辑那个文件,用微内核替换AppKernel。然后,运行clear:cache命令。为了确保安全,请删除app/cache/*目录的内容

烹饪书中没有说明这一点,因为它不是如何将Symfony标准版更改为微框架的教程,而是如何使用微内核

从Symfony标准版开始,您就拥有了微内核不需要的文件。只需删除AppKernel.php、AppCache.php。app/config目录也完全不需要。./src/AppBundle/也是冗余的

您应该创建一个空目录,并在那里运行composer require Symfony/Symfony,而不是Symfony标准版。然后创建app/MicroKernel.php和web/app.php,如本教程所示。您还需要包含以下内容的app/autoload.php文件这些关于注释的行在开始示例中不需要,但您以后可能需要它们-如果没有注释支持,您可以直接跳过创建此文件并包括vendor/autoload.php文件:

<?php
use Doctrine\Common\Annotations\AnnotationRegistry;
use Composer\Autoload\ClassLoader;

error_reporting(error_reporting() & ~E_USER_DEPRECATED);

$loader = require __DIR__.'/../vendor/autoload.php';
AnnotationRegistry::registerLoader(array($loader, 'loadClass'));

return $loader;

就这样。它应该可以正常工作。

有些离题:Symfony 3.0已经可用。@ThomasLandauer:。也就是说,对v2.8的支持将比v3长得多。使用v2.8而不是v3有好处。我只是在想:也许这是一个bug,他们同时修复了它-有些离题:Symfony 3.0已经可用。@ThomasLandauer:。也就是说,对v2.8的支持将比v3长得多。使用v2.8而不是v3有好处。我只是在想:也许这是一个bug,他们同时修复了它-