Doctrine Symfony 1.4:覆盖原则:构建模式命令

Doctrine Symfony 1.4:覆盖原则:构建模式命令,doctrine,symfony-1.4,command-line-interface,Doctrine,Symfony 1.4,Command Line Interface,是否可以覆盖Symfony 1.4 CLI命令 更具体地说,我想知道是否可以覆盖此命令: php symfony doctrine:build-schema 我要做的是在database.yml文件中为我在其中找到的每个连接添加一个新选项。 我要添加的选项是包选项 因此,假设的联系可能是: all: doctrine: class: sfDoctrineDatabase package: myPackageOption param: dsn: 'mysq

是否可以覆盖Symfony 1.4 CLI命令

更具体地说,我想知道是否可以覆盖此命令:

php symfony doctrine:build-schema
我要做的是在database.yml文件中为我在其中找到的每个连接添加一个新选项。 我要添加的选项是包选项
因此,假设的联系可能是:

all:
  doctrine:
    class: sfDoctrineDatabase
    package: myPackageOption
    param:
      dsn: 'mysql:host=localhost;dbname=my_db_name'
      username: db_user
      password: db_password

如果可能的话,我在哪里可以找到要重写的代码?

我建议您使用一些shell脚本预先生成databases.yml,然后自动调用php symfony原则:构建模式。比如:

build.sh,在项目根文件夹中:

#!/bin/bash
cp config/databases_1.yml config/databases.yml
php symfony doctrine:build
然后,在控制台中键入./build.sh(添加执行权限后)

复制/替换多个数据库是最简单的例子。但是你可以做任何你想要的处理

如果您不了解shell脚本,那么即使使用php脚本也可以修改文件,因此build.sh应该如下所示:

#!/bin/bash
php pregenerate_databases.php
php symfony doctrine:build

我建议您使用一些预生成databases.yml的shell脚本,然后自动调用php symfony原则:构建模式。比如:

build.sh,在项目根文件夹中:

#!/bin/bash
cp config/databases_1.yml config/databases.yml
php symfony doctrine:build
然后,在控制台中键入./build.sh(添加执行权限后)

复制/替换多个数据库是最简单的例子。但是你可以做任何你想要的处理

如果您不了解shell脚本,那么即使使用php脚本也可以修改文件,因此build.sh应该如下所示:

#!/bin/bash
php pregenerate_databases.php
php symfony doctrine:build

我试图覆盖该任务,但无法使其工作,但是:

您可以创建自己的任务,继承条令任务并完成您的工作: 在lib/task中添加sfDoctrineBuildSchemaCustomTask.class.php:

class sfDoctrineBuildSchemaCustomTask extends sfDoctrineBuildSchemaTask
{
  /**
   * @see sfTask
   */
  protected function configure()
  {
    $this->addOptions(array(
      new sfCommandOption('application', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', true),
      new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
    ));

    $this->namespace = 'doctrine';
    $this->name = 'build-schema-custom';
    $this->briefDescription = 'Creates a schema from an existing database';

    $this->detailedDescription = <<<EOF
The [doctrine:build-schema|INFO] task introspects a database to create a schema:

  [./symfony doctrine:build-schema|INFO]

The task creates a yml file in [config/doctrine|COMMENT]
EOF;
  }

  /**
   * @see sfTask
   */
  protected function execute($arguments = array(), $options = array())
  {
        // do your stuff before original call
    parent::execute($arguments,$options);
        // do your stuff after original call

  }
}
类sfDoctrineBuildSchemaCustomTask扩展了sfDoctrineBuildSchemaTask
{
/**
*@see-sfTask
*/
受保护的函数配置()
{
$this->addOptions(数组)(
新的sfCommandOption('application',null,sfCommandOption::PARAMETER_OPTIONAL,'application name',true),
新的sfCommandOption('env',null,sfCommandOption::参数_必需,'environment','dev'),
));
$this->namespace='doctrine';
$this->name='buildschema custom';
$this->briefDescription='从现有数据库创建架构';

$this->detailedDescription=我试图覆盖该任务,但无法使其工作,但是:

您可以创建自己的任务,继承条令任务并完成您的工作: 在lib/task中添加sfDoctrineBuildSchemaCustomTask.class.php:

class sfDoctrineBuildSchemaCustomTask extends sfDoctrineBuildSchemaTask
{
  /**
   * @see sfTask
   */
  protected function configure()
  {
    $this->addOptions(array(
      new sfCommandOption('application', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', true),
      new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
    ));

    $this->namespace = 'doctrine';
    $this->name = 'build-schema-custom';
    $this->briefDescription = 'Creates a schema from an existing database';

    $this->detailedDescription = <<<EOF
The [doctrine:build-schema|INFO] task introspects a database to create a schema:

  [./symfony doctrine:build-schema|INFO]

The task creates a yml file in [config/doctrine|COMMENT]
EOF;
  }

  /**
   * @see sfTask
   */
  protected function execute($arguments = array(), $options = array())
  {
        // do your stuff before original call
    parent::execute($arguments,$options);
        // do your stuff after original call

  }
}
类sfDoctrineBuildSchemaCustomTask扩展了sfDoctrineBuildSchemaTask
{
/**
*@see-sfTask
*/
受保护的函数配置()
{
$this->addOptions(数组)(
新的sfCommandOption('application',null,sfCommandOption::PARAMETER_OPTIONAL,'application name',true),
新的sfCommandOption('env',null,sfCommandOption::参数_必需,'environment','dev'),
));
$this->namespace='doctrine';
$this->name='buildschema custom';
$this->briefDescription='从现有数据库创建架构';

$this->detailedDescription=我会说是的。但是最后你想实现什么?…我想向database.yml添加一些其他选项,所以当我运行buildschema命令时,它会“使用”新选项我从来没有这样做过,但我认为你必须深入研究条令的生成,以覆盖你想要的内容。但是,也许你可以在你的问题中添加更多关于你想在
数据库.yml中添加什么的信息。我会说是的。但你想在最后实现什么?…我想在数据库中添加一些其他选项。yml、 因此,当我运行buildschema命令时,它会“使用”新选项我从来没有这样做过,但我认为你必须深入研究条令生成以覆盖你想要的内容。但也许你可以在你的问题中添加更多关于你想在
数据库中添加什么的信息。yml
。等一下,我已经能够编写一些shell脚本了,但我的问题不是这样。我的问题是:是否有可能是否能够超越symfony的内置命令原则:构建模式,如果是,如何实现?等等,我已经能够编写一些shell脚本,但我的问题不在于此。我的问题是:是否可以超越symfony的内置命令原则:构建模式,如果是,如何实现?