symfony 1.2/1.3でタスクからヘルパーを利用する

symfony1.1までは、sfLoader#loadHelpersメソッドを使用してアクションやタスク内からヘルパーをアクティベートし、呼び出すことができました。

しかし、sfLoader#loadHelpersメソッドは、symfony1.2から非推奨になっており、タスクなどで使用すると次のようなメッセージが表示されます。

>> main The sfLoader::loadHelpers() method is deprecated. Please use the same method from sfApplicationConfiguration.

ですので、このメッセージのとおり、sfApplicationConfigurationのメソッドを使用するように変更してみます。


まず、タスクの場合はデフォルトではどのアプリケーションにも属しません。(--applicationパラメータで指定可能)
デフォルトで使用するアプリケーションを指定する場合は、タスクのコード内の以下の箇所を書き換えます。

<?php
12    $this->addOptions(array(
13      new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED,
           'The application name', 'frontend'),  //  末尾にパラメータ 'frontend' を追加

このようにすると、タスクを実行する際にfrontendアプリケーションの設定が読み込まれます。

次に、タスク処理の本体部分でヘルパーを読み込みます。

<?php
	$this->configuration->loadHelpers(array('Text','Tag'));

タスクのインスタンスのconfigurationメンバに、上で指定したアプリケーションのconfigurationインスタンスが読み込まれています。このオブジェクトのloadHelpersメソッドを呼び出すと、ヘルパーを有効化できます。


※タスクでアプリケーションを何も指定しない場合、単にsfProjectConfigurationのみが読み込まれますが、sfProjectConfigurationクラスにはloadHelpersメソッドが定義されておらず、エラーになります。