Seaside ライクな PHP5 用 Webアプリフレームワーク「Phaux」

(via 「HREF Considered Harmful」) ステートフルなやつですね。ステートフルといえば、国産のだと「Piece Framework」がありますけども。むしろPradoの近縁とも言えるでしょうか。

追記: リンク書き忘れてました。
http://code.google.com/p/phaux/

<?php

class WHFormTest extends WHComponent {
	protected $firstName = "";
	protected $lastName = "";
	protected $sex = "Female";
	
	public function firstName(){
		return $this->firstName;
	}
	public function setYourName($aString){
		$this->firstName = $aString;
		return $this;
	}
	
	public function lastName(){
		return $this->lastName;
	}
	
	public function setLastName($aString){
		$this->lastName = $aString;
		return $this;
	}
	
	public function sex(){
		return $this->sex;
	}
	
	public function setSex($aSex){
		$this->sex = $aSex;
	}
	
	public function sexes(){
		return array("Male","Female","Yea baby!");
	}
	
	public function renderSexSelectOn($html){
		return $html->select()->setItems($this->sexes())->
								callback($this,"setSex")->
								setSelectedItem($this->sex);
	}
	
	public function submitButton($buttonLabel){
		
	}
	
	public function renderContentOn($html){
		$cont = $html->headingLevel(1)->
				with($this->firstName." ".$this->lastName. " -- ".$this->sex);
		$cont .= $html->form()->with(
			$html->text("First Name:").
			$html->textInput()->value($this->firstName)->callback($this,'setYourName').
			$html->br().
			$html->text("Last Name:").
			$html->textInput()->value($this->lastName)->callback($this,'setLastName').
			$html->br().
			$html->text("Sex:").
			$this->renderSexSelectOn($html).
			$html->br().
			$html->submitButton()->callback($this,'submitButton')->value("Submit!")			
			);
	
		return $cont;
	}
	
}
レポジトリにあるサンプルコードの抜粋

つまり

$html->textInput()->value($this->firstName)->callback($this,'setYourName').

ここでコールバック用のHTML をビルドしてるわけですね。様相としては JSF に近い。

シンタクティックシュガーが LL な Web アプリケーションフレームワークにおいていかに重要かを物語ってるような。
いや、いかんよこんなこと PHP でやっちゃ!!