->setFrom()
->setFrom() – (form で POST された) 配列またはオブジェクトから要素をコピーする
Synopsis
boolean $DB_DataObject->setFrom (
array or object $from
,
string $format = '%s'
,
bool $skipEmpty
= = false
)
Description
テーブル定義に基づいて、配列またはオブジェクトから現在のオブジェクトに
要素をコピーします(キーの値は上書きされません)。
このメソッドは、(もしフィールド名がデータベースと一致する場合)
フォームから POST される情報を処理したり、
オブジェクトを複製するのに使用できます。
setFrom メソッドを使用してキーカラムの値を設定することはできません。
セキュリティー上の理由により、暗黙的に無視されます。
(しかし、手動でキーの値を設定することはできます)
setFrom メソッドは、set系メソッド set{columnname} が存在していれば、
それをコールしようとします。
また、日付フォーマットを修正するために fromValue()
メソッドもコールします。
このメソッドがカラム名 from に対するオーバーロードされたメソッドと
重複していることに気づくかも知れません。
そのため、カラム名 'from' に関連するメソッドは、set_from と
getFrom になります。
Parameter
-
array or Object $from
- コピー元のオブジェクトを指定します。
-
string $format
- 配列またはオブジェクト変数のフォーマットを指定します。
これにより、どのようにこのオブジェクトに関連付けるかが決定されます。
例えば、指定した配列が prefix_COLNAME というフォーマットであれば、
'prefix_%s' を指定します。
-
bool $skipEmpty
- true にすると、DB_DataObject はカラムが空 ('' や 0 など)
の場合に空の値を代入しません。
Return value
array or boolean
- 成功時は TRUE、あるいは PHP4.3.2 以降では set*() の戻り値の配列
Note
This function can not be called
statically.
Example
<?php
// Person contains name,age
// $_POST contains 'name'=>'fred', 'age'=>'22'
$person = new DataObjects_Person;
$person->get(12);
$person->setFrom($_POST);
$person->update();
// or using the formating
// person contains name,age
// $_POST contains 'person_name'=>'fred', 'person_age'=>'22'
$person = new DataObjects_Person;
$person->get(12);
$ret = $person->setFrom($_POST,'person_%s');
// use the return value from setFrom to test for errors (PHP4.3.2)
if ($ret === true) {
$person->update();
} else {
// $ret is an array or strings..
echo 'There were some errors: ' . implode(', ', $ret);
}
// or copying from another object
$personA = new DataObjects_Person;
$personA->get(12);
$personB = new DataObjects_Person;
$personB->get(14);
$personA->setFrom($personB);
$person->update();
?>