Utilizzare l’estensione DOTNET di PHP

Il linguaggio PHP riserva sempre numerose sorprese tra cui estensioni poco note e/o con scarsa documentazione ed esempi. Una di queste si chiama COM and .Net e consente una incredibile interoperabilità ed espansione dei casi d’uso del linguaggio.

Questa estensione consente di utilizzare all’interno di uno script PHP le funzionalità messe a disposizione da un oggetto COM, che può essere una DLL scritta da noi stessi oppure da un’applicazione presente sul server, ad esempio Microsoft Word.

L’unico requisito è che il sistema operativo del server sia Windows.

Creare un documento Microsoft Word

<?php

// starting word
$word = new COM("word.application") 
         or die("Unable to instantiate Word");
echo "Loaded Word, version {$word->Version}\n";

//bring it to front
$word->Visible = 1;

//open an empty document
$word->Documents->Add();

//do some weird stuff
$word->Selection->TypeText("This is a test...");

$filename = dirname(__FILE__).'\\test.doc';
$word->Documents[1]->SaveAs($filename);

//closing word
$word->Quit();

//free the object
$word = null;

Lanciando questo script dalla console di Windows (Dos) verrà creato, scritto e salvato un documento Word.

Creazione di una DLL personalizzata in C#

E’ possibile creare una libreria in C# con funzionalità personalizzate ed utilizzarla all’interno di uno script PHP.
Ecco i passi da seguire:

  1. Aprire Visual Studio
  2. File > Nuovo > Progetto
  3. Scegliere Libreria di classi
  4. Creare una classe con un metodo pubblico (vedi esempio sotto)
  5. Nel menu principale di Visual Studio cliccare su “Progetto > Proprietà”
  6. Nella scheda “Applicazione”, alla voce “Framework di destinazione” scegliere “.NET Framework 4”
  7. Cliccare sul pulsante “Informazioni sull’assembly” e nella finestra che si apre selezionare “Rendi assembly visibile a COM”
  8. Compilare il progetto
  9. Aggiungere nel file php.ini la direttiva extension=php_com_dotnet.dll
  10. Copiare il file dll generato dalla compilazione nella cartella dove c’è php.exe (ad es.: c:\php)
  11. (Se si usa Apache) Copiare la dll nella cartella .\apache\bin\
  12. Lanciare il seguente comando da console: regasm nomefile.dll
    Il file eseguibile dovrebbe trovarsi nella cartella C:\Windows\Microsoft.NET\Framework\v4.0.30319

N.B. Ogni volta che si compila la DLL bisogna ripetere i passaggi 10-11-12

Sorgenti di esempio:

Codice C#

using System;
using System.Runtime.InteropServices;

namespace ClassPhp
{
    public class Class1
    {
        public string Hello()
        {
            return "Hello world";
        }
    }
}

Codice PHP

<?php

$obj = new COM('ClassPhp.Class1');
echo $obj->hello();

Download

Progetto .NET

Link

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *