カテゴリー : 2007年 6月17日

PHP5 MVC フレームワークの新スタンダード? symfony


http://www.symfony-project.com/
 
本日の「今更」その2。
 
CakePHPMojavi より symfony がいいかも。
 
と聞いていたので、とりあえずsymfony のインストールだけ。

$ pear channel-discover pear.symfony-project.com
$ pear install symfony/symfony

インストールの確認

$ symfony -V

と打てば

symfony version 1.0.3

のようにインストールしたバージョンが表示されます。
楽ちん。
 
なお、PHP ソースの configure 時に –enable-ctype をつけていないと
いざ使おうとした時に

PHP Fatal error: Call to undefined function ctype_alpha()

のようにエラーがでてしまいます。
(Windows の場合は ctype は標準で組み込まれているので問題ありません)
 
参考:
- symfony.jp symfony の日本語情報 WiKi
- CodeZine: symfonyで始めるPHPフレームワーク

Ruby on Rails はじめの一歩


今更ですが、最近ようやく Rails を触ってみました。
 
- 10分で作る Rails アプリ for Windows
- Ruby on Rails 公式 – [http://www.rubyonrails.org/]
 
10 分でできる Rails アプリは、本当に 10 分で Ruby on Rails の手軽さが分かるのでお勧めです。
10分で作る…が Windows + MySQL なので,とりあえず FreeBSD で DB を使わない Hello World を表示する場合のメモを残しておきます。
 
あまりまとまったものではないですが..
 

 
1.Ruby + RubyGems をインストール
 FreeBSD の場合、Ruby, RubyGems のいずれも ports からインストール可能です(RubyGems は lang/ruby-extensions に含まれる)。

# portinstall lang/ruby lang/ruby-extensions

 
2. RubyGems の gem コマンドで Ruby on Rails をインストール

$ gem install rails

上のコマンドで一発インストール。依存関係について聞かれるのが嫌なら

$ gem install -y rails

とすればプロンプトなしでインストールされるはずです。
 
3.$rails アプリケーションサーバの構築

$ rails foo

このコマンドひとつで、カレントディレクトリに以下のものをすべてふくむフォルダ foo/ を作成します。
- 管理用スクリプト(script/)
  たとえば script/server はスタンドアロンサーバであり、
  script/generate は目的に応じたクラスやフォルダの自動生成を行うスクリプトです。
- 公開ディレクトリ(public/)
  実際の URL マッピングは public/.htaccess および、public/dispatches.cgi で行われています。
  rails サーバのデフォルトのトップページは public/index.html です。
  
-コントローラ格納フォルダ(app/controllers)
  MVC の controller 格納先
  サンプルとして最初からコントローラの雛型(app/controllers/Application.rb)が含まれています。
  コントローラ作成時はコマンド(scriot/generate controller <コントローラ名>) で作成すると便利です。
 
-ビュー格納フォルダ(app/views)
  MVC の view 格納先。
  ここに .rhtml (eRuby) 形式のテンプレートファイルで view を記述します。
-モデル格納フォルダapp/models)
  MVC の model 格納先。
  script/generate model <モデルクラス名> 等で作成したモデルが格納されます。
 
- 設定ファイル(config/)、
コントローラと URL のマッピングを設定する config/routes.rb,
アプリケーション上のすべての Ruby スクリプトに影響する環境設定を行う config/environment.rb,
MySQL 等のデータベース接続用の設定(アカウント、接続先 DB 名等)を設定する config/database.yml 等があります。
 
- アプリケーションで利用する追加 ruby ライブラリ格納フォルダ(lib/)
  ここにいれておくと ruby スクリプトでのrequire でパス指定なしで参照できるようになります。
  例: lib/my_library.rb があれば、rails アプリケーションからの参照時は require ‘my_library’ とするだけでよい。
 
4. コントローラ作成

script/generate controller Foo

  デフォルトでは HTTP リクエスト URL の最初のディレクトリ表記がコントローラ、次が呼び出すメソッド(action)となっています。
  たとえば

http://localhost:3000/foo/edit

へのアクセスは、ファイル app/controllers/foo_controller.rb の

FooController#edit()

が実行されます。
また、

http://localhost:3000/foo

のように、アクションを省略した場合は、Foo#index メソッドが呼び出されます。
一般的な Web サーバにおける index.html が、コントローラでは index メソッドとなると考えれば分かりやすいと思います。
 
 
5. Hello world を出力する(view, model を使わない場合)
ActionController::Base#render() を使うのが基本です。
具体的にはコントローラのアクション定義メソッド(例: FooController#index)を以下のようにします。
app/controllers/foo_controller.rb

# 前略
def index
    render :text => “hello world!!”
end
# 後略

 
6.コントローラでテキストの出力を行う(view を使う場合)
まず以下のファイルを作成します。
app/views/foo/index.rhtml

<html>
 <head>
   <title>Hello Example</title>
 </head>
 <body>
 <%= @message %>
 </body>
</html>

次に、さきほどのfoo_controller.rb の def index を次のように書き換えれば自動的に index.rhtml を参照します。

def index
   @message = “Hello, world!”
   render
end

具体的には、参照される view のファイル名は

app/<コントローラ名>/<アクション名>.rhtml

です。