CakePHP1.2でZendFrameworkを使う

POSTED: Sep 23, 2008, 11:55 am
TAGS: ,


CakePHP内の持ってない機能をZendFrameworkで補うことに。最近のZFはとても高機能な上に、つまんで使えるのが素敵。

CakePHP1.2.x.xになってからvendor()が使えなくなりました。
PEARとかZendFrameworkを使うときにはクラスファイルを読み込む際にinclude_pathを通さなければならないので、その辺も踏まえつつ。

まずはZendFrameworkをダウンロードして、[app/vendors]に[Zend]をまるごと入れる。
そして、インクルードパスを設定するファイルを用意する。
app/vendors/zend_init.php

<?php
ini_set('include_path', get_include_path() . PATH_SEPARATOR . APP . 'vendors');
?>

あとはコントローラーで、zend_init.phpと使う機能のファイルを読み込んであげる。
1.2.x.xになってvendorsが使えなくなったので、別の方法で読み込む。
例えばフィードを取得してパースしたいとき。

app/controllers/hogescnotroller.php

<?php
App::import( 'Vendor', 'Zend', array('file'=>'zend_init.php'));
App::import( 'Vendor', 'Zend_Feed', array('file' => 'Zend'.DS.'Feed.php'));

Zend_Feed::import('http://hogehoge.com/feed');

こんな感じでZendが使えるようになりましたとさ。

(おまけ)
WindowsのXAMPPで使おうとしたら、

domdocument::domdocument() expects at least 1 parameter, 0 given in

こんな感じのエラーが出ます。
これが出た場合はおそらくphp5で、php_domxml.dllを使っている場合に出てしまいますので

apache/bin/php.ini
php/php.ini

;extension=php_domxml.dll

これをコメントアウトしてあげるとちゃんと動きます。
php4の場合は逆に、コメントを外すといいはず。