PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

オブジェクト | JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

オブジェクト

オブジェクト – MDB_QueryTool でオブジェクトを使用する方法

MDB_QueryTool のオブジェクトについて

結果としてオブジェクトを使用することができます。 概要を示す例は 導入 にあります。

しかし、オブジェクトを使用するというのは、 単に結果を配列のかわりにオブジェクトを返すというだけのことではありません。 デフォルトの MDB_QueryTool_Result_Row ではなく、 独自のクラスで結果を返すように登録することができるのです。 登録するクラスは MDB_QueryTool_Result_Row クラスを継承したものである必要があります。

例 1 - デフォルトの結果クラスの変更

結果のクラスを変更するには setReturnClass メソッドを使用します。

<?php
require_once 'MDB/QueryTool.php';
require_once 
'MDB/QueryTool/Result/Object.php';
define('TABLE_CARS''cars');
$dsn 'mysql://user:pass@host/dbname';

/**
 * "car" テーブルに、以下のフィールドがあるものとします
 * (id, model, hp, color, clima, price)
 */
class Car extends MDB_QueryTool
{
    public 
$table TABLE_CARS;
}

class 
CarEntity extends MDB_QueryTool_Result_Row
{
}

// Car クラスのインスタンスを作成します
$car = new Car($dsn);
$car->useResult('object');
$car->setReturnClass('CarEntity');
?>

クラス変数へのアクセス制御

これにより、ゲッター/セッター を実装できるようになり、 値へのアクセスを制御できるようになりました。 外部からのクラス変数へのアクセスを拒否するには、 protected として宣言します。private として宣言すると、 外部からだけではなく親クラスからのアクセスも拒否します。 もちろん、そのようにするなら、 対応するメソッドを実装して変数にアクセスできるようにしておかなければなりません。

例 2 - クラス変数へのアクセスの制限

サンプルを短くまとめるため、model と hp そして clima に関するメソッドのみを実装しました。

<?php
require_once 'MDB/QueryTool.php';
require_once 
'MDB/QueryTool/Result/Object.php';
define('TABLE_CARS''cars');
$dsn 'mysql://user:pass@host/dbname';

/**
 * "car" テーブルに、以下のフィールドがあるものとします
 * (id, model, hp, color, clima, price)
 */
class Car extends MDB_QueryTool
{
    public 
$table TABLE_CARS;
}

class 
CarEntity extends MDB_QueryTool_Result_Row
{
    protected 
$id;
    protected 
$model;
    protected 
$hp;
    protected 
$color;
    protected 
$clima;
    protected 
$price;
    public function 
getModel() {
        return 
$this->model;
    }
    public function 
setModel($model) {
        
$this->model $model;
    }
    public function 
getHp() {
        return 
$this->hp;
    }
    public function 
setHp($hp) {
        
$this->hp $hp;
    }
        public function 
getClima() {
        if (
$this->clima) {
            return 
true;
        } else {
            return 
false;
        }
    }
    public function 
setClima($clima) {
        if (
$clima) {
            
$this->clima 1;
        } else {
            
$this->clima 0;
        }
    }
}

// Car クラスのインスタンスを作成します
$car = new Car($dsn);
$car->useResult('object');
$car->setReturnClass('CarEntity');
?>

考察

この例は、基本的な機能を説明しただけのものです。 しかし、これだけでもたとえばデコレータを実装することができるでしょう。 いまどきのオブジェクト指向プログラミングの機能はすべて実装できるようになります。

忘却曲線を使ってこの知識を確実に記憶に残す

フォーラムで「オブジェクト」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | オブジェクト」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: