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; } }
合ってるのかわからないけど。。。