COM クラスのコンストラクタ。 パラメータには以下のような意味があります。
ロードするコンポーネントを指定する プログラム ID、クラス ID またはモニカです。
プログラムID は、通常、アプリケーションまたは DLL の名前の後に、 Word.Application のようにピリオドと オブジェクト名を付けたものです。
クラス ID は、指定されたクラスがユニークに定義する UUID です。
モニカは、URL スキームの考え方に似た特別な命名形式です。リソースと、 それがどのように読み込まれるかを指定します。例として、モジュール名に Word ドキュメントのフルパスを指定すると、Word を読み込んで ドキュメントに対応するオブジェクトを取得することができます。 あるいは、LDAP への ADSI インターフェースを指すモニカとして LDAP: を使用することが可能です。
コンポーネントが読み込んで実行される DCOM サーバの名前です。 NULL の場合、オブジェクトはアプリケーションのデフォルトを 指定して実行されます。典型的なデフォルトは、ローカルマシン上で 実行させることでが、管理者によってはアプリケーションを別の マシン上で実行させるように設定しているかもしれません。
非 NULL 値をサーバに指定した場合、 com.allow_dcom 設定オプションが TRUE に設定されていない限り PHP はオブジェクトの読み込みを 拒否します。
server_name が配列の場合、以下の要素 (大文字小文字を区別します!)を含まなければなりません。 これらはすべて省略可能であることに注意しましょう (とはいえ、Username および Password は両方指定する必要があります)。 もしサーバ設定を省略した場合は(上で説明した)デフォルトのサーバが 使用され、オブジェクトの生成は com.allow_dcom ディレクティブの影響を受けません。
表 1. DCOM サーバ名
server_name のキー | 型 | 説明 |
---|---|---|
Server | string | サーバの名前。 |
Username | string | 接続するユーザ名。 |
Password | string | Username に対するパスワード。 |
Flags | integer | 以下の定数のうちのひとつまたは複数の論理和。 CLSCTX_INPROC_SERVER、 CLSCTX_INPROC_HANDLER、 CLSCTX_LOCAL_SERVER、 CLSCTX_REMOTE_SERVER、 CLSCTX_SERVER および CLSCTX_ALL。指定されていない場合の デフォルト値は、Server を省略した場合が CLSCTX_SERVER でサーバ名を指定した場合は CLSCTX_REMOTE_SERVER です。 これらの定数の意味についての詳細な情報を得るには、Microsoft のドキュメントで CoCreateInstance について調べましょう。 通常はこれらを使用する必要はないはずです。 |
文字列と Unicode 文字列との相互変換に使用するコードページを指定します。 PHP の文字列と COM オブジェクトのメソッドとの受け渡しの際には、いつも 変換が行われます。PHP 5 では、コードページの扱いは面倒です。というのは、 オブジェクトだけではなくオブジェクトから返される variant にもそれが 影響するからです。
とりうる値は CP_ACP (システムのデフォルト ANSI コードページを使用する - このパラメータが指定されなかった場合の デフォルト)、 CP_MACCP、 CP_OEMCP、CP_SYMBOL、 CP_THREAD_ACP (現在実行中のスレッドの コードページ/ロケールを使用する)、CP_UTF7 および CP_UTF8 です。コードページに対応する 数値を指定することも可能です。コードページとそれに対応する数値に ついての詳細は、Microsoft のドキュメントを参照ください。
返されるオブジェクトは、オーバーロードされたものです。つまり、 PHP 側では通常のクラスのメソッドは見えないということです。 その代わりに、プロパティやメソッドへのアクセスは COM を通じて行います。
PHP 5 以降では、参照渡しのパラメータを受け付けるメソッドを PHP が 自動検出するようになりました。それらのメソッドについては、PHP が自動的に 変数を参照渡し形式に変換します。つまり、メソッドのコールをより自然に 行えるということです。コードの中で特別な処理をする必要はありません。
PHP 4 では、パラメータを参照渡しする場合には、そのパラメータをラップする ために VARIANT クラスのインスタンスを生成する 必要があります。
PHP 5 より前のバージョンでは、以下のようなメソッド名を COM に渡すことが できず、直接 PHP で扱うことができないというあまりうれしくない出来事が ありました。PHP 5 ではこれらを解決します。スクリプトの修正方法に ついては以下の詳細を参照ください。これらのマジックメソッドの名前は 大文字小文字を区別しません。
void COM::AddRef ( void )COM オブジェクトの参照カウントを作為的に追加します。
警告 |
このメソッドを使用することはまずないはずです。 これは、以下で説明する Release() メソッドを論理的に補完するものとして 存在するものです。 |
COM オブジェクトの参照カウントを作為的に削除します。
警告 |
このメソッドを使用することはまずないはずです。 これは、COM オブジェクトが必要以上に動作を続けてしまうというバグに 対応する方法として PHP に存在するものです。 |
以下の疑似メソッドは、 com_isenum() が TRUE を返す場合のみ利用可能で、この場合、これらのメソッドは、 通常は COM オブジェクトにより提供される同じ名前を有する全ての メソッドを隠蔽します。これらのメソッドは PHP 5 では完全に廃止されています。 代わりに foreach項参照XV, COM と .Net (Windows) を使用してください。
variant COM::All ( void )10 の要素を保持する SafeArray を表す variant を返します。 個々の要素は empty/null の variant となります。この関数は イテレータからの全ての要素を含む配列を返すことを想定していますが、 決して完了しません。使用しないでください。
variant COM::Next ( void )イテレータの次の要素を表す variant を返します。要素が もうない場合には FALSE を返します。
variant COM::Prev ( void )イテレータの前の要素を現す variant を返します。要素が もうない場合には FALSE を返します。
void COM::Reset ( void )イテレータを最初の場所まで巻き戻します。
例 2. COM の例 (2)
|