CakePHPのshellでHtmlヘルパーを利用しURLを生成する

CakePHPのシェルでHtmlヘルパを使ってHtmlHelper::url()を呼び出して、URLを取得する方法です。
CakePHP1.3をベースに書いています(CakePHP2の場合はApp::uses()を使うなどすればいけると思います)。

<?php
App::import('Helper', 'Html');
App::import('Core', 'Router');

class HelloShell extends Shell {
  public function startup() {
    include CONFIGS . 'routes.php';  //(1)
    $this->Html  = new HtmlHelper();  //(2)
  }

  public function main() {
    echo $this->Html->url(array('controller'=>'posts', 'action'=>'index'));
  }
}

Htmlヘルパのurl()メソッド中ではRouterクラスが利用されているため、最初にApp::importでHtmlヘルパとRouterクラスを読み込みます。
次に、シェルの場合はconfig/routes.phpで定義したものが自動で読み込まれないため、これをソースコードの(1)のようにして読み込みます。これを忘れるとうまくURLが生成できないので注意!
最後に、(2)のようにしてHtmlHelperクラスのインスタンスを生成します。


Htmlヘルパを使った独自のMyHtmlヘルパみたいなのを使いたい場合は、下記のようにすればOK
<?php
App::import('Helper', 'MyHtml');
App::import('Helper', 'Html');
App::import('Core', 'Router');

class HelloShell extends Shell {
  public function startup() {
    include CONFIGS . 'routes.php'; 
    $this->MyHtml  = new MyHtmlHelper();
    $this->MyHtml->Html  = new HtmlHelper();
  }

  public function main() {
    echo $this->MyHtml->myUrl(array('controller'=>'posts', 'action'=>'index'));
  }
}