首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开始使用Symfony2.8作为MicroFramework (MicroKernel)

开始使用Symfony2.8作为MicroFramework (MicroKernel)
EN

Stack Overflow用户
提问于 2015-12-03 22:30:54
回答 1查看 1.2K关注 0票数 1

因此,我想尝试使用这个新版本的Symfony (2.8.0)的一个新特性:http://symfony.com/blog/new-in-symfony-2-8-symfony-as-a-microframework

Symfony网站上的教程非常简单。然而,我无法开始。我仍然得到默认的登陆网页。

我已经遵循了食谱的每一个步骤,也就是说,设置了该文件的内容与第一个Hello应用程序示例中提供的代码完全相同,因此我不会在这里粘贴它。

我还按照食谱更新了./web/app.php的以下代码:

代码语言:javascript
复制
<?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();

我还清除了缓存:

代码语言:javascript
复制
$ 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.

我的虚拟主机配置正确:

代码语言:javascript
复制
<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/中更改任何内容吗?缺乏关于这个新特性的文档也没有帮助。

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-03 23:29:27

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

“食谱”中没有提到这一点,因为它不是“如何将Symfony标准版转换为一个微框架”的教程,而仅仅是“如何使用MicroKernelTrait”的教程。

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

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

代码语言:javascript
复制
<?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;

就是这样。它应该能正常工作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34077483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档