PHPAnnotation できたよ

というわけで今週取り組んでいた PHP で Annotation の作業が1段落ついたので codecheck.in にコミットしました。よかったら見てくださいな。

使い方はこんな感じ。

<?php
class SampleAction {

    /**
     * Required アノテーションがついてるので
     * このフィールドは必須チェックが実行されます
     * @Required
     * @var string
     */
    public $name;

    /**
     * アクションを実行します
     * Validation を実行します。Validation が失敗した
     * 場合は hoge に遷移します
     * @Execute(input=hoge)
     */
    public function validateExecute() {
    }
    
    /**
     * アクションを実行します
     * Validation は実行しません
     * @Execute(validate=false)
     */
    public function notValidate() {
        ;
    }
}

簡単な解説。まず $name に Required アノテーションがついています。なので必須チェックされます。Validation は function 単位の実行が可能で function には Execute アノテーションをつけます。
validateExecute は Validation を行い、検証に失敗した場合は input で指定された値を参照して画面遷移します(未実装)。Execute アノテーションの validate=false にした場合、 Validation は実行されません。notValidate function がこの例です。
明日からはフロントコントローラーの設計を始めます。
追記
codecheck.in は実行環境つきです。素晴らしい。
なので、早速実行してみました。

<?php
include_once 'RequestProcessor.php';
include 'action/SampleAction.php';

$action = new SampleAction();
$method = 'validateExecute';

$processor = new RequestProcessor();
$valid = $processor->processValidate($action, $method);

print_r($valid);

$method = 'notValidate';
$valid = $processor->processValidate($action, $method);

if ($valid == null) {
    echo 'valid is null';
}
?>

PHPAnnotation
実行できた! やった!