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メソッドが定義されておらず、エラーになります。