conveyor 2.1.1リリース
conveyor 2.1.1がリリースされました。
マニュアル http://conveyor.rhaco.org/manual/
ダウンロード http://code.google.com/p/conveyor/downloads/list
ロゴの追加、Safariへの対応など、外面内面で機能追加、修正がされています。
逆引きrhaco(?)6: 無名関数(もどき)を作る
PHPでは無名関数をつくれないのですが、それっぽいものをrhacoではつくることが出来ます。(rhaco 1.3.1以降)。
(追記)実際は無名関数ではなく、無名っぽくするために、ランダムにクラス名を決める、ランダム名クラスになります。
例えばJavascriptで
ret = function(x){return x++;} alert(ret(3));// = 3
というのを
Rhaco::import('lang.Variable'); $return = Variable::anonym(array("alert","x","return x++;")); echo $return->alert(3);// = 3
と書けます。引数が複数欲しい場合は
$return = Variable::anonym(array("alert","x,y","return x+y;")); echo $return->alert(3,1);// = 4
プロパティを指定したい場合は
$return = Variable::anonym("hoge","fuga",array("alert","x","$this->hoge=x;$this->fuga=x-1;")); $return->alert(3); echo $return->hoge;// = 3 echo $return->fuga;// = 2
プロパティは2つを例としましたが、何個でも指定可能です。
Javascriptより直感的ではないですが、これを使うことで、手軽に関数を書くことが出来ます。後日書く予定のmixinでメソッドを追加するのも簡単にできます。
Conveyor 2.1.0リリース
結構前ですが、Conveyor 2.1.0がリリースされました。主な変更点は
- workerインストーラーの追加
- ドラッグアンドドロップによるworker操作
- 作成したlineの読みだし機能
です。スクリーンキャストもあります。
逆引きrhaco(?)5: ファイルの読み書き
rhacoでファイルを読み書きする場合はio.FileUtilを使用します。
Rhaco::import('io.FileUtil'); //読み込み $filer = new FileUtil(); $sentence = $filer->read('/path/To/readfile','EUC-JP'); ... //書き込み $filer->write('/path/To/writefile',$sentence,'EUC-JP'); $addsentence = 'rhaco is ht++'; //追加 $filer->append('/path/To/writefile',$addsentence,'EUC-JP');
FileUtil::read();
みたいな使いかたは出来ません。
(2007/10/19追記)
静的呼び出ししたい場合はファイルが存在するという前提で、
Rhaco::import('io.model.File');//Rhaco::import('io.FileUtil');でも使用可能になります。 $sentence = File::read('/path/To/readfile');
で読み出せます。エンコードは指定できないですがー。
(追記ここまで)
メソッドの第3引数は省略可能です。指定しなければ元のエンコードのままです。
FileUtilは良く使うのでFというショートカットが用意されてます。
Rhaco::import('io.F');
で使用できます。
他にもFileUtilにはファイルを操作するために色々なメソッドがあります。少しずつ載せていこうと思います。
(最新の記事はrhacoアプリ開発日誌で見ることが出来ます。)
逆引きrhaco(?)4: Atomフィードを取得したい
前回はFeedが強制的にRSS2.0形式になっていたので、Atom1.0形式をそのまま読み込みたい場合。
Rhaco::import('tag.feed.Atom10'); Rhaco::import('network.http.Http'); $feed = new Atom10(); $feed->set(Http::body('http://url/To/atom'));
こんな感じ。FeedParserと違って、URLを引数に取れないので、Httpクラスを使ってソースをGETし、それを引数とします。他にAtom0.3(Atom03), RSS0.9(Rss09), RSS1.0(Rss10)形式が使用できます。
逆引きrhaco(?)3: Feedを取得する
一番簡単な方法は
Rhaco::import('tag.feed.FeedParser'); $feed = FeedParser::read('http://url/To/feed');
です。注意点は
○必ずRSS2.0形式になること
○RSS2.0形式で通常使われる項目(channel項目としてtitle,link,description,image,cloud,textinput、item項目としてtitle,link,description,author,guid,source,comments,pubdate,enclosure,category)以外は取得されないこと。(例えばdc:subjectなどの項目は取得できません。)
○RSS2.0形式の制限があること。(例えばitemのlink項目は複数取得できません)
です。
channel無しでitemのみ必要な場合は
$items = FeedParser::getItem('http://url/To/feed');
[便利な機能]
http://url/To/feedの代わりにhttp://url/To/htmlとすると、指定したHTMLファイル内にがある場合、その中にあるフィードを読み込んでくれます。
逆引きrhaco(?)2: グローバル変数を設定したい
グローバル変数を設定したい場合はphp.iniでregister_globals = Onなんてしないで
Rhaco::setVariable('変数名','値');
とすると値が設定されます。値を取り出す時は
$variable = Rhaco::getVariable('変数名');
でOKです。