CakePHP

CakePHP 外部PHPプログラムからライブラリのように使う方法

情報は数年前から散見できたが、使いたくなってきたので試してみた。驚くほど簡単に利用でき、今後のアプリケーション作りに活かせるかな、と云う事で備忘録となります。

先ずはソース。

<?php
	$_GET['url'] = 'favicon.ico';
	require_once = 'webroot/index.php';

	$dispatcher = new Dispatcher();
	$result = $dispatcher->dispatch('/posts/index', array('return'=>false));
	echo $result;

これで posts コントローラの index アクションを実行し、レンダリングされた結果が表示できる。

$_GET[‘url’]に文字列「favicon.ico」をセットすると、require_once で読み込んだ index.php の実行が dispatcher を動作せずに終了するようになっている。

さて、レンダリングは layout を含んでいるので、アクションのレンダリング結果だけを必要とする場合はどうするか?

dispatch()の2番目のパラメータで、「’bare’=>true」を与えればいいようだ(試した結果であって、ソース中身は確認してない)。

CakePHP の利用で大変ありがたいのがデータベースの処理だが、Model も簡単に利用できる。

<?php
	$_GET['url'] = 'favicon.ico';
	require_once = 'webroot/index.php';

	$postModel = ClassRegistry::init('Post');
	$post = $postModel->find('first');

	echo $post['Post']['title'] . '
' . $post['Post']['content'];

CakePHP はいよいよ 2.0ベータがリリースされたので、準備を怠らないようにしないと、と思うこの頃です。