batch

symfony init-batch default hoge_fuga myapp

batch/hoge_fuga.phpに以下の内容のファイルが作られる。

<?php
/**
 * hoge_fuga batch script
 *
 * Here goes a brief description of the purpose of the batch script
 *
 * @package    myproject
 * @subpackage batch
 * @version    $Id$
 */

define('SF_ROOT_DIR',    realpath(dirname(__file__).'/..'));
define('SF_APP',         'myapp');
define('SF_ENVIRONMENT', 'dev');
define('SF_DEBUG',       1);

require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');

// initialize database manager
//$databaseManager = new sfDatabaseManager();
//$databaseManager->initialize();

// batch process here

この下につらつら書いていくのもなんかイヤだったから、これだけ追記するようにしてみた。

batch::execute(__FILE__);

実際のクラスは、lib/batch.class.phpとして、

<?php
class batch
{
  public static function className($fullpath)
  {
    $path_infos = pathinfo($fullpath);
    $basename = $path_infos['filename'];
    $camelize = sfInflector::camelize($basename);
    return 'batch'.$camelize;
  }

  public static function execute($fullpath)
  {
    $className = self::className($fullpath);
    $class = new $className();
    $class->execute();
  }
}

後は、batchHogeFugaクラスに書いていく
lib/batch/batchHogeFuga.class.php

<?php
class batchHogeFuga extends batchBase
{
  public function execute()
  {
    parent::initialize();

    //$this->initializeDatabase();
  }
}

親クラスはlib/batch/batchBase.class.php

<?php
class batchBase
{
  protected $databaseManager = null;

  public function initialize()
  {
    mb_language('ja');
  }

  protected function initializeDatabase()
  {
    $this->databaseManager = new sfDatabaseManager();
    $this->databaseManager->initialize();
  }

  public function getDatabaseManager()
  {
    return $this->databaseManager;
  }
}

合ってるのかわからないけど。。。