2006-07-01から1ヶ月間の記事一覧

区切り文字対応のucwords

class Moony_Utils { function ucwords($str, $delimiter) { if (!Moony_Utils::isEmpty($delimiter)) { $elements = explode($delimiter, $str); for ($i = 0; $i < count($elements); $i++) { $elements[$i] = ucfirst($elements[$i]); } return implode($…

0.11.xリリースは8月に

気づけば月末…ということで、0.11.xのリリースは8月に延期します。8月中にはリリースできる予定。現時点でのソースはCVSのリポジトリから参照することができます。まだ頻繁に仕様が変わったりしていますが…。

変数の省略形

Moony_Requestのインスタンスをインスタンス変数としてアクションクラスの基底クラスに持たせる場合、「$request」という名前にすることが多い。でも、いざ自分で使う場合は「$req」とか短縮形で書きたくなる。その方がタイプ量が少ないから。Ethnaのソース…

コンテナ復活

コンテナ機能、やっぱりあった方が便利だ。Moony 0.11.xに乗せてしまおう。 アクション単位でモジュール登録できる(設定にはiniファイルを使用、アクション名で指定) セクション名に「*」を使用することで共通のモジュールを登録可能 モジュールのインスタ…

ログ出力用クラス

Moonyの話題に戻ろう。ログ出力用クラス、Moonyの一部として必要だろうか? エンタープライズ用途にはほぼ必須の機能なのだけれど、フレームワーク側で用意するほどの機能でもないような気がする。テキストログではなく、DBにログを出力する場合もあるだろう…

余計なもの全部いらない

もう、完全に小さなフレームワークにすることにした。 "the tiny web application framework"として、最小限の機能に絞ることに。

executeメソッドの引数

コンテナの実装、やめたとか書いたけど、やっぱり復活させようかと。以前書いたような簡易コンテナで、インスタンスを名前と紐付けてプロパティに格納するようなイメージ。で、そのコンテナのインスタンスをアクションクラスのexecuteメソッドの引数にしよう…

HTTPステータスを返す関数

今まで必要に応じて自作してたけど、ishinaoさんが作成/公開しているのを発見。 http://trac.ishinao.net/1470net/wiki/HTTP_Status http://trac.ishinao.net/1470net/browser/libs/trunk/HTTP/Status.php 汎用的なものだと思うのだけれど、PEARにはこういう…

executeメソッドの引数

やっぱりアクションクラスのexecuteメソッドの引数は廃止。同等のインスタンス変数を用意することに。「$this->」って書くのが面倒だけど、統一的に扱うにはその方がよさげ。 class Foo extends Moony_Action { // 主処理を記述 function execute() { // 入…

小岩

http://d.hatena.ne.jp/habuakihiro/20060720#1153373738そういえば、スターロジックって小岩にあるんだった。昭和通りの方に移転したみたい。小岩なら自転車で通えるな…と思ってみたり。ぼく自身が小岩産まれなこともあって、以前から気になっている会社。

Moonyのライセンス

MoonyのライセンスをBSDライセンスからMITライセンス(和訳)に変更しようか考え中。少しでも制約の少ないライセンスにしたいので…。ちなみにRuby on RailsがMITライセンスなのね。

$this->って面倒

前から思ってるんだけど、PHPでインスタンス変数を使用する場合に $this->fooって書く必要があるのは面倒くさいよなぁ。もっと短く書けるとよかったのに。

Moony 0.11.xの予定

7月中にリリース予定 遅れても8月上旬には出せるはず 8月上旬に夏休み取るしね 後方互換性なし 0.10.xというより0.9.xに似たインタフェース インジェクションは使わない Smartyを使わないようになる 今後、何らかの方法で使えるようにするかも ロギング機能…

元に戻った

Moony次期バージョンですが、結局今までとほぼ同じインタフェースになりそう。アクションクラス: class Foo { function initialize() { // 初期化処理を記述 } function filter(&$f) { // リクエストパラメータの変換処理を記述 $f->setHiragana('furigana')…

phpide、試用

Eclipse 3.2も出たことだし、前から気になっていたphpideを入れてみた。面倒なのでAll in one packageを選択、ダウンロード。調べるといろいろとプラグインが入っている模様。少し触ってみたが、動作が重い。Eclipseなので仕方ないが…。 文字コード/改行コー…

Responseクラスの仕様とか

ぼちぼち考えてみる。Responseクラスはアクションクラスの処理結果を格納するクラス。同時に、テンプレートの表示やテキストの出力なども行う。インスタンスがアクションクラスのexecuteメソッドに引数として渡される。 メソッド名: 機能 set($name, $value)…

コンテナの実装、やめた

先日書いたけど、コンテナの導入はやめようかと。ヘビーに使うには中途半端だし、Moony自体がコンテナを持つ利点をあまり感じない。それならば適宜他のDIコンテナを組み合わせた方がいいように思える。S2Container.PHP5とかScarletとか。

配列の値を取得する関数 from Moony_Utils

キーが配列に存在しない場合は代替値を返す。 function getArrayValue($key, $array, $alt = null) { if (is_array($array) && array_key_exists($key, $array)) { return $array[$key]; } return $alt; }

パス生成用関数 from Moony_Utils

function generatePath($dir, $file, $ext = null) { $dir = rtrim($dir, DIRECTORY_SEPARATOR); $file = trim($file, DIRECTORY_SEPARATOR); $ext = ltrim($ext, '.'); $path = ''; if (strlen($dir) > 0) { $path = $dir . DIRECTORY_SEPARATOR . $file; }…

file_exists_ex

include_pathを考慮したfile_existsが流行っているようなので。 http://blog.poyo.jp/archives.php/categ-1/year-2006/month-7/id-1152085878 http://d.hatena.ne.jp/koyhoge/20060706/1152174594 function file_exists_ex($path) { $dirs = explode(PATH_SE…

文字列が空かどうか調べる関数 from Moony_Utils

function isEmpty($str) { if (!isset($str)) { return true; } return (strlen($str) == 0); }

フラッシュスコープ変数

次期Moonyでも、フラッシュスコープの変数を扱う仕組みは残す予定。ちなみにフラッシュスコープとは、次のアクションが実行されるまでの間セッションに保存される領域のこと。次のアクションが実行されるタイミングで値がクリアされるので、セッションに値を…

おお。

はてなTシャツ欲しい! はまぞうのやつなんかかわいいかも。象の絵柄が素敵。

コンテナの導入

[Foo] sample = Bar_Sampleとかiniファイルに書いておくと、アクションクラスの中でクラスBar_Sampleのインスタンスをコンテナ経由で取得できるようにする。クラス名がBar_Sampleの場合、以下の順番でクラスファイルを探索する(include_pathを考慮)。 Bar/…

validationの記述方法、そして

必要な場合だけ項目名をエラーメッセージに埋め込むことにしようかと。区切り文字は「::」。項目名を設定した場合、テンプレート側で個別のエラーメッセージを表示するような書き方ができるようにする(ヘルパーを用意)。また、各項目に関してエラーの有無…

validationの記述方法

function validate($v) { // パターン1 $v->setRequired($this->name, '名前は必ず入力してください'); $v->setHiragana($this->ruby, 'ふりがなはひらがなで入力してください'); // パターン2 $v->setRequired('name', '名前は必ず入力してください'); $v->…