Hatena::Grouparaistudy

czk-htnの日記

2010-01-18

[][] Ethnaのチュートリアルを試してみる 2 22:50

ethna コマンドを使って action, view, template を作成できる。このあたりは sledge や rails っぽい。

% ethna add-action login
file generated [/Users/xxxx/Documents/lang/php/20100118_ethna/skel/skel.action.php -> /Users/xxxx/Documents/lang/php/20100118_ethna/app/action/Login.php]
action script(s) successfully created [/Users/xxxx/Documents/lang/php/20100118_ethna/app/action/Login.php]

% ethna add-view login
file generated [/Users/xxxx/Documents/lang/php/20100118_ethna/skel/skel.view.php -> /Users/xxxx/Documents/lang/php/20100118_ethna/app/view/Login.php]
view script(s) successfully created [/Users/xxxx/Documents/lang/php/20100118_ethna/app/view/Login.php]

% ethna add-view -t login
file [/Users/xxxx/Documents/lang/php/20100118_ethna/app/view/Login.php] already exists -> skip
file generated [/Users/xxxx/Documents/lang/php/20100118_ethna/skel/skel.template.tpl -> /Users/xxxx/Documents/lang/php/20100118_ethna/template/ja_JP/login.tpl]
template file(s) successfully created [/Users/xxxx/Documents/lang/php/20100118_ethna/template/ja_JP/login.tpl]

% ethna add-template login
file [/Users/xxxx/Documents/lang/php/20100118_ethna/template/ja_JP/login.tpl] already exists -> skip

% ethna add-action login_do
file generated [/Users/xxxx/Documents/lang/php/20100118_ethna/skel/skel.action.php -> /Users/xxxx/Documents/lang/php/20100118_ethna/app/action/Login/Do.php]
action script(s) successfully created [/Users/xxxx/Documents/lang/php/20100118_ethna/app/action/Login/Do.php]

リクエストからレスポンスまでの流れは、Controller → ActionForm → Action → View → (Smarty)と、Strutsの経験があればすんなり理解できる作りになっている。チュートリアルにも書いてあるように Struts を意識した作りになっているようだ。ただ、昨今のフレームワークの良いところはちゃんと反映されていて、

  • 規約に基づいて Action - ActionForm - View の関連づけを推測してくれる (struts-config.xmlにあたる設定が不要)
  • バリデーションもPHPコードで設定できる(validation.xmlにあたる設定が不要)
  • リコンパイルなしに画面に反映される(PHPだから当たり前なんだけど)

チュートリアルを一通り試したら開発マニュアルを参照して、機能を詳しく調べていく。


[][] Ethnaのチュートリアルを試してみる 1 22:50

% export PATH=~/Documents/lib/pear/bin:$PATH
% ethna
usage: ethna [option] [command] [args...]

available options are as follows:

  -v, --version    show version and exit

available commands are as follows:

  add-action
  add-action-test
  add-app-manager
  add-app-object
  add-entry-point
  add-project
  add-template
  add-test
  add-view  add-view-test
  channel-update
  clear-cache
  help
  i18n
  info-plugin
  install-plugin
  list-plugin
  make-plugin-package
  pear-local
  uninstall-plugin
  upgrade-plugin
% ethna add-project
error occured w/ command [add-project]
  -> Application id isn't set.

usage:
ethna add-project [-b|--basedir=dir] [-s|--skeldir] [-l|--locale] [-e|--encoding] [Application id]

add-project の引数が増えているけど、ここはデフォルトで。

~/Documents/lang/php に sample を作成する。

% ethna add-project -b ~/Documents/lang/php/20100118_ethna sample   

...

project skelton for [sample] is successfully generated at [/Users/xxxx/Documents/lang/php/20100118_ethna]
% cd ~/Sites/
% mkdir sample
% cd sample/
% ln -s ~/Documents/lang/php/20100118_ethna/www/index.php .
% ln -s ~/Documents/lang/php/20100118_ethna/www/css

~/Sites から シンボリックを辿ることを許可しておく必要がある。

% sudo vi /etc/apache2/users/xxxx.conf
<Directory "/Users/xxxx/Sites/">
    Options Indexes MultiViews
+   AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

% sudo /usr/sbin/apachectl graceful
% cat > ~/Sites/sample/.htaccess
+   Options +FollowSymlinks
トラックバック - http://araistudy.g.hatena.ne.jp/czk-htn/20100118

2010-01-17

[][] OSX Leopard で Ethna-2.5.0 07:09

PHPのバージョンは5.2.11。

PEARのインストール

インストール先は ~/Documents/lib/pear にした。/usr/lib に入れるのに抵抗があったので。

% curl http://pear.php.net/go-pear | php
% export PATH=~/Documents/lib/pear/bin;$PATH

ApacheでPHP5を有効にする

/etc に php.ini を作成する。include_path にPEARのパスを追加する。

% sudo cp /etc/php.ini.default /etc/php.ini
% sudo vi /etc/php.ini
- include_path = ".:/php/includes:"
+ include_path = ".:/php/includes:/Users/xxx/Documents/lib/pear/PEAR"

Apacheの設定ファイルを編集してPHP5を有効にする。

% sudo vi /etc/apache2/httpd.conf
- #LoadModule php5_module        libexec/apache2/libphp5.so
+ LoadModule php5_module        libexec/apache2/libphp5.so
% sudo /usr/sbin/apachectl graceful
% tail /var/log/apache2/error_log
[Mon Jan 18 00:11:43 2010] [notice] Apache/2.2.13 (Unix) mod_ssl/2.2.13 OpenSSL/0.9.7l DAV/2 PHP/5.2.11 SVN/1.4.4 configured -- resuming normal operations

Ethnaをインストールする

アーカイブはいったん手元にダウンロードしてからインストールしてみた。職場だとプロキシのためネットからの直接インストールができなかったりするので。

% pear channel-discover pear.ethna.jp
Channel "pear.ethna.jp" is already initialized
% pear install ~/Downloads/Ethna-2.5.0.tgz
WARNING: "pear/DB" is deprecated in favor of "pear/MDB2"
Did not download optional dependencies: pear/DB, ethna/Smarty, ethna/simpletest, use --alldeps to download automatically
ethna/Ethna can optionally use package "pear/DB"
ethna/Ethna can optionally use package "ethna/Smarty"
ethna/Ethna can optionally use package "ethna/simpletest"install ok: channel://pear.ethna.jp/Ethna-2.5.0

Smartyをインストールする

Ethnaをアーカイブからインストールした場合はSmartyは入らない。

  1. PHP Template Engine | Smartyからファイルをダウンロード(2.6.26)。
  2. 展開して libs ディレクトリを PEAR の下にコピーする。
% tar xzf ~/Downloads/Smarty-2.6.26.tar.gz
% cd Smarty-2.6.26/  
% cp -Rp libs/ ~/Documents/lib/pear/PEAR/Smarty          
トラックバック - http://araistudy.g.hatena.ne.jp/czk-htn/20100117