nazolabo

フリーランスのWebエンジニアが近況や思ったことを発信しています。

rhaco 1.1.0 Released

一昨日リリースされてた!
「サンプルアプリケーション」「テストツール」が消えた?
例によってWebサーバのユーザとファイルのユーザが違う状態でテスト。
サンプルアプリケーションが消えたから何をしていいのかわからなくなったので、とりあえず前回のバージョンのが残ってたからひっぱってくる。
./sample.php

<?php
require_once("./__init__.php");
Rhaco::import("tag.HtmlParser");
Rhaco::import("network.http.Request");

$request 	= new Request();
$htmlParser	= new HtmlParser();

$request->setVariable("dateString",date("Y/m/d H:i:s"));

$htmlParser->setVariable($request->getVariable());
$htmlParser->write("sample.html");

./resources/templates/sample.html

<html>
<head>
	<title>index</title>
</head>
<body>
Date: {$dateString}<br />
<a href="http://www.rhaco.org" var="rhaco.org">frameworkname</a>

<form method="post">
	Hidden:<input type="hidden" name="dateString" reference="true" /><br />
	Text:<input type="text" name="textvalue" reference="true" /><br />
	Password:<input type="password" name="passwaordvalue" reference="true" /><br />
	Checkbox:<input type="checkbox" name="checkboxvalue" value="true" reference="true" /><br />	
	
	Select:<select name="selectvalue" reference="true">
		<option value="php">php</option>
		<option value="python">python</option>
		<option value="ruby">ruby</option>
	</select><br />
	Radio:
		<input type="radio" name="radiovalue" value="true" reference="true" />true
		<input type="radio" name="radiovalue" value="false" reference="true" />false
	<br />
	Textarea:<textarea name="textareavalue" reference="true"></textarea>
	
	<input type="submit" value="submit" />
</form>
</body>
</html>

まあでもサンプルアプリケーションは、基本的な形式と、HTMLの要素にreference="true"でvalueが入るってところしかわからないし、無くてもいいのかなぁ。やはりちゃんとしたドキュメントがほしいところ。誰か作って!
と思ったらphpDocができてた。クラスがわかるからこれだけでもだいぶ楽かも。
たとえばデータベース操作は、database.DbUtilのSingleton的なものを作って(ここまでは自動生成)、そこからインスタンスを取得してアクセスする感じなんだけど、たとえばselectは

$object_list = $dbUtil->select(new Bbs(), new Criteria());

みたいな感じで、BbsはともかくCriteriaって何って話だったんだけど、これは「database.DbUtilで利用する条件設定クラス」らしい。例えばチュートリアルのものを作って(ところでまだDbUtilTest.phpが生成されてない気がする)、ためしに書き込んでいくと、ログが延々と表示されるんだけど、これを最新10件にしたい場合は、

$criteria = new Criteria();
$criteria->setLimit(5);
$criteria->addOrderDesc(Bbs::columnId());
$object_list = $dbUtil->select(new Bbs(), $criteria);

これでいける。というのが簡単にわかる。(実際はaddOrderDescの引数が何かわからなくて結構ソース調べたけど)
PostgreSQLの場合、セットアップ画面の「データベースの設定」の「エンコード」の欄に「UTF8」と入力するとエラーになります(多分)。必要でなければ空欄にしましょう。