ウィンドウ|ワード
PHP4 の COM 関数 (Windows)
Alain M. Samoun
はじめに
PHP4 の組み込み COM 機能は、win32 環境でプログラミングする一部の人にとって非常に魅力的です。これまでのところ、このテーマに関する文書はあまりありません。この短い記事では、実際の PHP4 プログラミングで COM を使用する方法を、MS Office 2000 の Word および Excel プログラムと Adobe Distiller プログラムを使用した 3 つの例とともに説明します。 COM テクノロジは、Microsoft によってさまざまな名前で数年間開発されてきました。この記事に関する限り、OLE、OLE オートメーション、ActiveX、および COM という用語はすべて同じであり、Windows アプリケーションの一部の機能を実行する、カプセル化されたコード部分 (オブジェクト) を指します。 PHP4 COM はオブジェクトに接続し (オブジェクトをインスタンス化し)、そのメソッドとプロパティを使用します。
以下の例を再現したい場合は、私の構成を以下に示します:
Windows 98 - MS Office 2000
Apache 1.3.9 Windows
PHP4.02 Dev (08-20-00) CGI として実行
PHP4 の COM タグ
PHP4 で COM 関数を使用するための具体的な情報から始めます。コンポーネントをインスタンス化するには、「new」演算子とオブジェクトの「OLE プログラム識別子」が必要です:
$instance = new COM("$identifier");
?>
COM は PHP4 の予約されたクラス名であるため、オブジェクトの識別子をコンストラクターに渡します。コンポーネントをインスタンス化したので、OOP クラスを使用してそのメソッドとプロパティに簡単にアクセスできます。例:
$instance->[オブジェクト]->[メソッド1]->[メソッド2]->..->[プロパティ];
?>
とても簡単です!
PHP4 COM には、OOP 構造が機能しない場合に使用される 2 つのタグ関数があります。 (ドットや括弧などの無効な文字を含むプロパティの名前と値に関する PHP 構文の問題の場合):
bool com_set(class com_object, string property name, string property_value);
mixed com_get(class com_object, string property_name);
?>
最後に、PHP4 は、リモート コンピューター上にオブジェクトのインスタンスを作成するための DCOM もサポートしています。
$Instance = new COM(string "Component name", string "remote_server_address");
?>
注: PHP 設定で設定する DCOM ディレクティブがあります。 PHP 開発者は、将来的に Unix 用の DCOM サポートを追加する可能性があります。それだけです。他に覚えるべき関数はありません。
識別子、メソッド、プロパティ。
識別子は次のような文字列です:
MS Wordの場合: 「Word.Application」または「Word.Application.9」
MS Excel: 「Excel.Application」または「Excel.Sheet」
ADOBE Acrobat: 「Exch.application」または「PdfDistiller.PdfDistiller」
最後の識別子名が示すように、オブジェクトの正しい名前を知るのは必ずしも簡単ではありません。 VBA ドキュメントにアクセスできない場合は、Windows レジストリを調べて ([スタート] - [regedit を実行])、HKEY_CLASSES_ROOT フォルダを調べます。拡張機能リストの最後までスキャンすると、アプリケーション名が表示されます。マシンで使用できる COM 識別子は、CLSID サブフォルダーを持つフォルダーです。
アプリケーション プログラムは、その COM メソッドとプロパティを文書化する必要があります。 Office 2000 の場合は、アプリケーションを起動し、
MS Word での PHP4 COM 関数の使用
これで、最初のコード例を開始するために必要なものがすべて揃っています:
#****************************************** **************
# この例は、Zend サイトから少し変更されています
# 「Useless test.doc」という名前の新しい
# ドキュメントを含む Word のインスタンスが開きます。行:
# 「This is a test2...」と入力します。
#******************************* **************************
#Word コンポーネントをインスタンス化します。
$word = new COM("word.application") or die (「Word をインスタンス化できません」);
#バージョンを取得して印刷します
print "読み込まれた Word、バージョン {$word->Version}
";
#com_get を使用してバージョンを取得する別の方法
$testversion = com_get($word->application,version);
print "Com_get() を使用したバージョン: $testversion
";
#ウィンドウに表示する
$word->Visible = 1;
#新しいドキュメントを開く
$word->Documents->Add();
#何か書いてみましょう
$word->Selection->TypeText("これはテストです...");
#ドキュメントを保存します
$word->Documents[1]->SaveAs("Useless test.doc");
#Word 文書を見たい場合は次の行をコメントしてください
#その後手動で Word を閉じてください
$word->Quit();
#Word 文書を見たい場合はコメントしてから閉じてください
?>
Word に付属の OLE ドキュメントを使用してこの例を数分間学習すると、独自のプログラムを作成するために必要なほぼすべてを学習できます。