Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在基于Symfony控制台组件的应用程序中加载捆绑包?_Php_Symfony_Doctrine Orm_Composer Php_Symfony 3.3 - Fatal编程技术网

Php 如何在基于Symfony控制台组件的应用程序中加载捆绑包?

Php 如何在基于Symfony控制台组件的应用程序中加载捆绑包?,php,symfony,doctrine-orm,composer-php,symfony-3.3,Php,Symfony,Doctrine Orm,Composer Php,Symfony 3.3,我可能在理解Symfony控制台组件时遇到了一些基本问题。我正在尝试编写一个基于控制台的应用程序,我想将Doctrine捆绑包添加到其中以创建基于ORM的实体,但是,我无法将捆绑包加载到我的应用程序中 我发现我应该创建app/AppKernel.php并在那里添加捆绑包: public function registerBundles() { $bundles = array( new Doctrine\Bundle\DoctrineBundle\DoctrineBund

我可能在理解Symfony控制台组件时遇到了一些基本问题。我正在尝试编写一个基于控制台的应用程序,我想将Doctrine捆绑包添加到其中以创建基于ORM的实体,但是,我无法将捆绑包加载到我的应用程序中

我发现我应该创建
app/AppKernel.php
并在那里添加捆绑包:

public function registerBundles()
{
    $bundles = array(
        new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
    );
    return $bundles;
}
然后,我还将AppKernel添加到composer.json并转储了composer的自动加载文件:

"classmap": [ "app/AppKernel.php" ]
但是,我仍然无法在控制台应用程序的入口点中看到任何条令命令。我甚至不认为内核加载正确,最让我困惑的是Github上这两个文件之间的差异。首先是控制台组件的
Application.php
,它使用字符串作为构造函数参数:

然后在Symfony框架中有一个相同的文件,它使用内核作为参数:

那么我是不是完全走错了路?如何在控制台组件应用程序中加载捆绑包/内核?或者我需要完整的Symfony软件包来做这种事情?如果我只需要编写一个有点复杂的终端应用程序,那似乎有点过分了

为了以防万一,以下是my
composer.json中的相关包:

"symfony/console": "v3.3.*",
"symfony/yaml": "v3.3.*",
"doctrine/orm": "~2.5",
"doctrine/doctrine-bundle": "~1.6",
"doctrine/doctrine-cache-bundle": "~1.2",

如果您创建一个控制台命令来扩展ContainerWareCommand,如下所述:

然后你可以打电话:

$em = $this->container->get('doctrine.orm.entity_manager');

它为您提供了EntityManager,允许您在命令行应用程序中使用条令。无需编辑您的AppKernel或composer文件即可使其正常工作。

嘿,谢谢您的回复。这是否意味着我必须手动执行命令,如
php-bin/console-doctor:database:create
?不,默认情况下,命令
doctor:database:create
。只需键入
php-bin/console
,您就会看到所有可用命令的列表。顺便问一下,这个答案对您完全有效吗?如果是这样,请单击答案旁边的复选标记以表明它是正确的答案。不,就是这样,我无法运行该命令,因为我只有控制台组件,而没有完整的Symfony框架。我试图解决的问题是使条令命令可用,但这不起作用,因为捆绑包不能通过AppKernel连接到我的控制台二进制文件中。捆绑包是将这些命令与其他准备一起注册的,这就是为什么它们在我的应用程序中不可用的原因。肯定有办法只将捆绑包加载到控制台组件中吗?否则,当独立时,它似乎相当有限。@AlvinBunk可能想再次阅读该问题。他们特别不想使用Symfony框架。