PHPのフレームワーク CakePHP
前回は「風俗サイトのSEOについて」と題して SEO について書いてみましたが、このネタはどうも愚痴っぽくなっていかんですね。というわけでもっとテクニカルな話題にふれてみます。
以前のことになりますが、 PHP の実行エンジンを開発している Zend より Zend Framework 正式版がリリースされた時、 これが PHP のフレームワークのデファクトスタンダードになるであろうと予測したのですが、いざ自分でフレームワーク使うときにではこれを選ぶかというとそれは別の話で、規模的にも簡易なものがよかったのでとりあえず CakePHP を試しに使っています。
この CakePHP というフレームワーク、使いやすいと評判の Ruby on Rails をお手本にしているだけあって、こざっぱりしていて風通しがいい印象です。外部アプリを取り込んで使うことも簡単なので、たとえば PHP テンプレートシステムのデファクトである Smarty を使ってページ出力をしたり、PEAR ライブラリを使ったりと、手法を組み合わせることができるのも魅力です。
外部の XML を読み込んでデータとして使いたかったので、使用可能なモデルに XML が無いかと探してみたのですが、RSSはあっても XML は残念ながら無し。CakePHP のバージョン 1.2 にはヘルパーとして XML が入っているのですがこれはヘルパーなのでおそらく出力用のモジュールのようです。
いろいろ探したのですが見つからなかったので、 CakePHP で RSS エントリを取り込んで使用する方法「CakePHPでRSSフィードの読み込み」というエントリを参考に、この RSS モデルである rss.php を改造して xml モデルを作成しました。XML のパースには、最初は外部ライブラリとして PEAR の XML パーサを使おうかと考えましたが、「XMLをパースしてArrayに」こんなエントリがあったのでこれを組み込んでみました。
このモデルをコントローラの中で指定してこんな感じで使います。
class SamplesController extends AppController { var $name = 'Samples'; var $uses = array('Xml'); function index() { $entrys = $this->Xml->findAll(/* XML の URL */); $this->set('xmldata', $entrys); } }
一度モデルを作っておけば後はお手軽に URL を指定するだけです。これは楽ですね。