# dotnet クラス

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

## はじめに

dotnet クラスにより、 クラスやメソッドが » COM に見えている場合、 .Net アセンブリからクラスを生成して そのメソッドをコールしたりプロパティにアクセスしたりできるようになります。

staticクラス をインスタンス化したり、staticメソッド を呼び出すことはサポートされていません。 `System.Collections.Generic.List` のようなジェネリッククラスをインスタンス化することもサポートしていません。

.Net クラスによっては、IDispatch を実装していないものがあります。 それらはインスタンス化はできるものの、メソッドをコールしたり プロパティへアクセスすることをサポートしていません。

> 注意:

> この機能を利用するには、Webサーバーに .Netランタイムをインストールする必要があります。

> 注意:

> PHP 8.0.0 より前のバージョンでは、 dotnet クラスは.Net framework 4.0 以降をサポートしていませんでした。 アセンブリが regasm.exe によって登録されている場合は、 それらのクラスは com オブジェクトを通じてインスタンス化できます。 PHP 8.0.0 以降では、php.ini の com.dotnet_version を指定することで .Net framework 4.0 以降をサポートします。

## クラス概要

class dotnet extends variant {
/* メソッド */
public function __construct(string `$assembly_name`, string `$datatype_name`, int `$codepage` = `CP_ACP`)
}

## オーバーロードされたメソッド

返されるオブジェクトはオーバーロードされています。つまり、通常の クラスのような固定されたメソッドは存在しないということです。 そのかわりに、プロパティやメソッドへのアクセスは COM を通じて DOTNET に渡されます。言い換えれば、.Net ランタイムが提供する COM相互運用レイヤによって .Net オブジェクトが COM 連携用にマップされているという ことです。

dotnet オブジェクトが作成されると、PHP はそれを他の COM オブジェクトと同等のものとして扱い、同様の規則が適用されます。

## dotnet の例

例1 dotnet の例

    <?php
    $stack = new dotnet("mscorlib", "System.Collections.Stack");
    $stack->Push(".Net");
    $stack->Push("Hello ");
    echo $stack->Pop() . $stack->Pop();
    ?>

## 目次

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

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