Могут ли расширения PHP быть написаны с использованием C #

Можно ли создать расширение PHP с помощью C #?

Нам нужно подключить PHP к внутренним библиотекам, которые мы написали на C # .NET 4.6 для Windows, и мы хотим быть как можно ближе к PHP, не имея при этом такого обслуживания, которое мы можем назвать внешним по отношению к php, таким образом, идея создания пристройка в доме.

Я посмотрел на пару вариантов:

  1. Используйте расширение PHP DOTNET для вызова сборки C #.

    • Насколько я могу судить, это расширение не работает с .NET 4+, а код C # требует версии 4.6, к сожалению.
  2. Написать расширение PHP.

    • До сих пор я видел только примеры для Windows, использующие Win32 и C ++, в идеале было бы неплохо, если бы расширение могло быть написано на C #. У меня есть мысли о создании библиотеки с использованием кода C #, который нам нужен, затем об использовании этого в расширении Win32 / C ++ и попытке сделать это, если мне абсолютно необходимо.
  3. Вызовите код C # как внешнюю услугу.

    • В качестве самого последнего варианта это было бы жизнеспособно, и я вижу, что это более гибко для использования другими источниками (например, PHP, Java, C # и т. Д.)

Было бы интересно иметь возможность написать расширение PHP с использованием C #, предполагая, что это возможно. Я вижу, как это не может быть «лучшим» вариантом, если это возможно, хотя.

Спасибо за чтение и советы !!!

0

Решение

Исходя из идеи @SevaAlekseyev, я смог заставить PHP вызывать C # с помощью COM.

<?php
$object = new COM('ComClassExample.ComClassExample');
echo '1 and 1 added: ' . $object->AddTheseUp(1,1);
?>

Используя следующий сайт, я смог создать C # dll, который выставлял себя как объект COM. https://whoisburiedhere.wordpress.com/2011/07/12/creating-a-com-object-from-scratch-with-c/

И, немного подправив событие Post-build, я смог загрузить новую версию для PHP (пришлось копировать, потому что PHP получал сообщение об отказе в доступе)

iisreset /stop
copy /Y "$(TargetPath)" C:\com\$(TargetFileName)
$(frameworkdir)\$(frameworkversion)\regasm.exe C:\com\$(TargetFileName) /codebase /tlb /nologo
iisreset /start

@JuanDelaCruz Peachpie выглядит как интересный инструмент для запоминания, но похоже, что он предназначен для компиляции перед развертыванием, которое в данный момент не работает в нашем магазине.

Спасибо всем!

0

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

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

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