Как создать экземпляр класса .NET в PHP, который имеет параметризованный конструктор?

Я хочу использовать класс .NET в PHP и использую DOTNET класс PHP для этой цели. Я хочу создать экземпляр класса, который имеет параметризованный конструктор.

$e = new DOTNET($full_assembly_string, $full_class_name);

Как передать аргументы конструктора через этот API?

6

Решение

Это невозможно сделать

Есть несколько проблем при выполнении этой интеграции, которые вы могли бы рассмотреть:

  1. Публичные методы

Как говорится в руководстве по PHP, возвращаемый объект является перегруженным объектом, что делает PHP неосведомленным о публичных методах, которые может содержать объект. Так что, если вы его var_dump, вы не увидите ничего, кроме пустого массива. Вот почему внутренняя структура класса DLL должна быть известна до ее вызова.

К счастью для нас, есть еще один инструмент, специализированный для этой работы, поставляемый с .NET Framework, который называется ildasm.exe. Он расположен рядом с gacutil.exe под
c: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ или c: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v6.0A \ bin.
Чтобы загрузить и отобразить структуру DLL, просто вызовите «ildasm.exe \ path \ to \ your.dll».

2. Параметры
Другая проблема заключается в том, что вы не можете передавать параметры конструктору классов в DLL.

  1. Типы данных

Будучи двумя разными языками программирования, мы задействовали разные типы данных. При этом вам необходимо убедиться, что методы класса DLL возвращают типы данных, которые понимает PHP (в основном, строки, целые, логические значения и т. Д.). В случае, если ваши методы должны возвращать список массивов или более сложную структуру, вы можете рассмотреть JSON для кодирования.

Узнайте больше на

http://blog.zitec.com/2012/handling-net-assemblies-in-php/

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector