# com クラス

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

## はじめに

com クラスにより、OLE 互換の COM オブジェクトのインスタンスを作成し、 そのメソッドをコールしたりそのプロパティにアクセスしたりすることが 可能となります。

## クラス概要

class com extends variant {
/* メソッド */
public function __construct(
string `$module_name`,
array|string|null `$server_name` = `null`,
int `$codepage` = `CP_ACP`,
string `$typelib` = ""
)
}

## Overloaded Methods

返されるオブジェクトは、オーバーロードされたものです。つまり、 PHP 側では通常のクラスのメソッドは見えないということです。 その代わりに、プロパティやメソッドへのアクセスは COM を通じて行います。

参照渡しのパラメータを受け付けるメソッドを PHP が 自動検出するようになりました。それらのメソッドについては、PHP が自動的に 変数を参照渡し形式に変換します。つまり、メソッドのコールをより自然に 行えるということです。コードの中で特別な処理をする必要はありません。

## com の例

例1 com の例 (1)

    <?php
    // word を起動します
    $word = new com("word.application") or die("Unable to instantiate Word");
    echo "Loaded Word, version {$word->Version}\n";

    // 前面に移動させます
    $word->Visible = 1;

    // 空のドキュメントを開きます
    $word->Documents->Add();

    // 何か複雑なことを行います
    $word->Selection->TypeText("This is a test...");
    $word->Documents[1]->SaveAs("Useless test.doc");

    // word を閉じます
    $word->Quit();

    // オブジェクトを開放します
    $word = null;

    ?>

例2 com の例 (2)

    <?php

    $conn = new com("ADODB.Connection") or die("Cannot start ADO");
    $conn->Open("Provider=SQLOLEDB; Data Source=localhost;
    Initial Catalog=database; User ID=user; Password=password");

    $rs = $conn->Execute("SELECT * FROM sometable");    // Recordset

    $num_columns = $rs->Fields->Count();
    echo $num_columns . "\n";

    for ($i=0; $i < $num_columns; $i++) {
        $fld[$i] = $rs->Fields($i);
    }

    $rowcount = 0;
    while (!$rs->EOF) {
        for ($i=0; $i < $num_columns; $i++) {
            echo $fld[$i]->value . "\t";
        }
        echo "\n";
        $rowcount++;            // increments rowcount
        $rs->MoveNext();
    }

    $rs->Close();
    $conn->Close();

    $rs = null;
    $conn = null;

    ?>

## 目次

- com::__construct — com クラスのコンストラクタ

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open