COM 및 .Net(Windows) dotnet 클래스

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


소개

dotnet 클래스를 사용하면 .Net 어셈블리에서 클래스를 인스턴스화하고 해당 메서드를 호출하고 해당 속성에 액세스할 수 있습니다(클래스와 메서드 및 속성이 » COM에 표시되는 경우).

정적 클래스를 인스턴스화하거나 정적 메서드를 호출하는 것은 지원되지 않습니다. System.Collections.Generic.List와 같은 제네릭 클래스의 인스턴스화도 지원되지 않습니다.

일부 .Net 클래스는 IDispatch를 구현하지 않으므로 인스턴스화할 수는 있지만 이러한 클래스의 메서드를 호출하거나 속성에 액세스하는 것은 지원되지 않습니다.

메모: 이 기능을 활용하려면 웹 서버에 .Net 런타임을 설치해야 합니다.

메모: PHP 8.0.0 이전에는 .Net 프레임워크 4.0 이상이 dotnet 클래스에서 지원되지 않았습니다. 어셈블리가 regasm.exe에 등록된 경우 클래스는 com 개체로 인스턴스화될 수 있습니다. PHP 8.0.0부터 .Net 프레임워크 4.0 이상은 php.ini 지시문 com.dotnet_version을 통해 지원됩니다.


클래스 개요

                  
class dotnet extends variant {

  /* Methods */
  public __construct(string $assembly_name, string $datatype_name, int $codepage = CP_ACP)
}
                  
                

오버로드된 메서드

반환된 객체는 오버로드된 객체입니다. 즉, PHP는 일반 클래스에서와 같이 고정된 메서드를 볼 수 없습니다. 대신 모든 속성 또는 메서드 액세스가 COM을 통해 전달되고 거기에서 DOTNET으로 전달됩니다. 즉, .Net 개체는 .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();
?>
                  
                

목차