PHPのフレームワークBEARを動かしてみる(インストール編)

PHPにBEARというフレームワークがあるのを初めて知った。

BEARというのは、ページ指向のフレームワークだそうだ。

3つのコンポーネント

  • ページ – リソースリクエストとリソース状態のビューへのプッシュ
  • リソース – インターフェイスとURIを持った情報
  • ビュー – リソースの表現

を使って、webを構築するようだ。

で、リソース指向でページ指向らしい。

なにが良い感じで、何が悪い感じなのかは使ってみないと分からない。

ということで、とりあえず環境構築から。

BEARの公式wikiにインストール方法が書いてあるので、それを参考にやってみる。

http://code.google.com/p/bear-project/wiki/Install

まずは、

CentOS上に、Apacheを入れて、PHPをフルコンパイル、フルインストール。

PHPは、とりあえず、5.3あたりを採用

PHPが使える状態にしたらBEARのインストール

pearというツールを使って入れるようだ。

pearというのは、ん~、Rubyで言うところの、gemsか。

PHP向けのパッケージを管理するツールみたい。

5.3には、PHPにpearが入っているようなので、コマンドを叩いてみる

なにやら、使えるコマンドがズラズラ出てきました。

pearは正常に動いているようです。

なので、とりあえず公式にあるとおりにコマンドを入れます。

これは、gemでいうところの、gem souces -a [source] みたいなものか。。

これは、追加したチャンネルの情報を更新するコマンドかな?

本体をアップデート

更新されているパッケージを全部アップグレード

BEARをインストール

ここで、ちょっと変なメッセージが出ました。

インストールポリシーがstableなのに、ベータを入れようとしてるよ。という事らしい。

BEARは…っと

ベータしかない。。

ので、ベータを入れる方法を検索

バージョンを指定して入れることで、ベータでも入れられるようだ。

そしたら、今度は

というエラーが
Pandaが入っていないと言っているようです。

なので、Pandaをインストール

それから、再度bearのインストール

これで、一応BEARは入りました。

ということで、コマンドを叩いてみます。

そしたら、こんなエラーが出ました。

Console_CommandLineというクラスが見つからないらしい。

PHPのlibにも入っていません。

なので、pearで探してみます。

ありました。

ということでインストール

再度bearコマンドを実行

今度はうまくいったようです。

続いて、プロジェクトを作成してみます。

bear init-app helloworld

今度は、こんなエラーが。。

File_SearchReplaceが無いようなので、これもpearでインストール

再度init-app実行

うまくプロジェクトを作成出来たようです。

続いて、Apacheの設定で、公開してみます。

プロジェクトのhtdocsの中には、helloWorld.phpファイルがあるので、このファイルをブラウザから見ることが出来たら、成功です。

と、ブラウザで見てみると、再びエラー

FirePHPが入っていないと駄目なようです。

仕方が無いので、入れてみます。

pear channel-discover pear.firephp.org
pear install firephp/FirePHPCore

これで、一応エラーがなく画面が表示されるはずです。

DBアクセスのテストと思って、適当にRoファイルを作成してコマンドラインで叩いてみたら、またエラーが出ました。

#/home/bear/helloworld/App/Ro/User.php

というファイルを作成し、

プロジェクトのディレクトリで

bear read User

と叩いた所、

というのが出ました。

なので、pearでまた入れてみます。

再度、

bear read User

を実行してみたら、うまく表示されました。

次に、実際にDBに接続してデータを持ってきます。

接続先は

App/app.yml ファイルに定義してあります。

slaveDBをここで設定出来たりするので、selectだけをslaveに振り分けると言うことが出来そうです。

さて、先ほど作成したUser.phpファイルは、単純にArrayの配列を返していたので、

ここで実際にDBに接続してDBのデータを返すように変更してみます。

この状態で、再度

うん、エラーになりました。

だそうなので、MDB2というのを入れてみようかと思います。