スポンサーリンク

PHPのORマッパ Propel
で生成したPHPのクラスでは、値の検証(validation)を行うことができます。
例えば、下記の値チェックを行うことができます。
  • 文字数がオーバーしていないか?
  • ちゃんと値はセットされているか?
  • 数値が指定されているか?
値の検証するコードを生成するには、Propelのschema.xmlで指示する必要があります。
schema.xml
schema.xmlにvalidatorのタグを記述します。

uidがセットされているか?

<rule name="required" message="uid is required." />


uidの長さは、多すぎないか?

<rule name="maxLength" message="uid can be no larger than ${value} in size" />

${value}は、columnのuid部分で指定したsize="150"の値が参照されます。

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="miniblog" defaultIdMethod="native">
  <table name="blog">
    <column name="id" type="BIGINT" primaryKey="true" autoIncrement="true" />
    <column name="uid" type="VARCHAR" size="150" required="true" />
    <validator column="uid">
	    <rule name="maxLength" message="uid can be no larger than ${value} in size" />
	    <rule name="required" message="uid is required." />
    </validator>
    <column name="body" type="VARCHAR" size="500" required="true" />
    <validator column="body">
	    <rule name="maxLength" message="body can be no larger than ${value} in size" />
	    <rule name="required" message="body is required." />
    </validator>
    <column name="create_at" type="TIMESTAMP" defaultExpr="CURRENT_TIMESTAMP" />
  </table>
</database>

schema.xmlを更新したら、再度、propel-gen を実行します。
propel .
propel . insert-sql

それでは、自動生成された値チェックを利用してみます。
オブジェクトのvalidate関数を呼ぶだけでチェックができます。

<?php
$blog = new Blog();
$blog->setUid('User1');
$blog->setBlog('blog message 1.');
if ($blog->validate()) {
	// 値チェックがOKなのでDBへ保存する
	$blog->save();
} else {
	// エラー
	$validationFailuresArray = $blog->getValidationFailures();
	foreach ($validationFailuresArray as $v) {
		echo $v->getMessage(), PHP_EOF;
	}
}
?>

propelは、schema.xmlに制限のルールを記述するだけで、簡単にバリデーションできて、便利です。結構、自分で値チェックのコードを書くのは、面倒ですよね、書くのも、テストも。

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー