如何将symfony bundle应用于Laravel?

ryu*_*h00 0 php symfony laravel

\我听说Laravel是用symfony,php框架制作的.所以,我认为symfony bundle也可以在Laravel工作.

IgorwFileServeBundle github

我想将它安装到Laravel"5.1.*".所以我在composer.json编辑了这一行.

"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.1.*",
    "igorw/file-serve-bundle": "~1.0"
},
Run Code Online (Sandbox Code Playgroud)

然后我执行了composer update.readme.md说我必须将它添加到我的应用程序的内核中.

public function registerBundles()
{
    $bundles = array(
        // ...
        new Igorw\FileServeBundle\IgorwFileServeBundle(),
        // ...
    );
    // ...
}
Run Code Online (Sandbox Code Playgroud)

所以我把它添加到我的内核中.

protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\VerifyCsrfToken::class,
    \Igorw\FileServeBundle\IgorwFileServeBundle::class,
];
Run Code Online (Sandbox Code Playgroud)

但是当我在浏览器中保存并转到我的应用程序时,Bundle.php第29行中的FatalErrorException:未找到类'Symfony\Component\DependencyInjection\ContainerAware'.

我错了什么?

Wou*_*r J 6

Symfony和Laravel是两个完全不同的框架.Symfony构建于20多个(甚至30多个)Symfony组件之上(由Symfony团队创建的独立库).这些组件由框架bundle绑定在一起,创建的框架称为Symfony全栈框架.

Laravel也使用其中一些组件.Laravel框架只是将这些组件粘合在一起的另一种方式.另一个框架Silex是绑定这些组件的另一种方式.

Bundles是Symfony 全栈组件(实际上是HttpKernel组件)的概念.Laravel不使用它,所以你不能在Laravel中使用任何捆绑包.

如果需要使用Symfony软件包,则需要使用Symfony应用程序.幸运的是,Laravel也有一个很大的社区.很可能有一个Laravel包为Laravel框架实现了相同的功能.