->set*() and ->get*()

->set*() and ->get*() – オーバーロードを用いた自動的な set系・get系メソッド

Synopsis

true | string $DB_DataObject->set* ( mixed $value )

mixed $DB_DataObject->get* ( )

Description

PHP 4.3.2RC2 以降、DB_DataObject は自動的にオーバーロードされ、 あなたがメソッドを定義していなくても $object->set{ColumnName}() や $object->set{ColumnName}($value) を使用して全ての変数にアクセスできます。

set メソッドはエラーの場合文字列を返し、さもなければ TRUE を返します。 これにより、setFrom メソッドと連携し、 エラー文字列の配列を返すことができます。

get メソッドは toArray() メソッドで使用されます。 もし定義されていれば、 人が読める日付の作成のようにカラムの表示を変更することができます。

ロジックは非常にシンプルです。もし $object->setXXX() がコールされ、 かつ定義されていない場合、単純に値を設定します。 もし setXXXX メソッドが定義されていれば、デフォルトハンドラの代わりに コールされます。同じ事が getXXX() メソッドについても適用されます。

カラム名が from である場合に名前衝突の可能性があるので、 カラム 'from' に関連するメソッドは setFrom() ではなく set_from になります。

Parameter

  • mixed $value - set系メソッドのみ (カラムに割り当てる値を) 指定します。 get系メソッドでは日付フォーマットや sprintf の整形文字列を引数として指定します。

Return value

mixed - set系メソッドは、デフォルトメソッドや独自実装からは TRUE 。値が不正な場合、setXXX($value) メソッドは文字列 (エラー) を返し、成功の場合 TRUE。 getXXX メソッドは、値あるいは整形された値を返す。 このメソッドは $object->toArray() に影響することを忘れないように。

Note

This function can not be called statically.

注意: このメソッドは実験的なものです。この動作は将来変更されるかも知れません。

Example

オブジェクト変数に基づくシンプルな検索とデータのフェッチ

<?php
class DataObjects_Person extends DB_DataObject {

    var 
$id;
    var 
$name;
    var 
$date_of_birth;

    
// you can define this method after you implement a call to it!
    // as it is automatically implemented to return $this->date_of_birth by
    // the overload __call() method.

    
function getDate_of_Birth() {
        return 
date('d M Y'strtotime($this->date_of_birth));
    }
}


$person = new DataObjects_Person;

$person->get(12);

// now lets use the getters and setters even though some are not defined.
echo $person->getName() . ' was born on  ' $person->getDate_of_Birth();
?>

結果の出力



       Fred Blogs was born on 1 April 1970
JOIN クエリを生成するために他の DataObject を追加する (Previous) (form で POST された) 配列またはオブジェクトから要素をコピーする (Next)
Last updated: Thu, 23 Oct 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.