Menjalankan PHP pada .NET Core

2 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Menjalankan PHP pada .NET Core
Menjalankan PHP pada .NET Core

TeknoCerdas.com – Salam cerdas untuk kita semua. Menjalankan PHP pada .NET Core mungkin terdengar aneh. Itu karena PHP, sebagaimana yang diketahui bukanlah bahasa yang didukung oleh .NET seperti C#, F# atau Vitual Basic .NET. Lantas apakah bisa menjalankan PHP pada .NET Core? Jawaban singkatnya, bisa.

Lazimnya PHP adalah dijalankan dengan PHP interpreter. Kode sumber akan langsung dievaluasi dan dijalankan oleh interpreter. Berbeda dengan Java atau .NET yang merupakan managed code dimana kode dikompilasi ke satu format untuk dijalankan oleh virtual machine. Java Virtual Machine (JVM) untuk Java dan Commn Language Runtime (CLR) untuk .NET.

PeachPie PHP Compiler

Agar PHP dapat dijalankan oleh .NET CLR maka diperlukan sebuah compiler yang mentransformasikan kode sumber PHP menjadi format managed code yang dikenali oleh .NET CLR. Perkenalkan PeachPie sebuah PHP compiler untuk .NET.

PeachPie adalah sebuah proyek open source untuk menjalankan PHP diatas .NET framework. Dengan PeachPie maka pengembang dapat melakukan interoperabilitas kode antar bahasa pemrograman. Sebagai contoh ketika menulis kode PHP pengembang dapat memanggil pustaka yang ditulis dengan C#.

Dengan berjalan diatas .NET maka kode PHP juga akan otomatis menerima semua kelebihan yang ditawarkan oleh .NET Framework. Selain itu pengembang juga dapat melakukan mix-and-match penggunaan pustaka internal PHP dengan pustaka .NET.

Instalasi PeachPie

Sebelum melakukan instalasi PeachPie pengguna harus melakukan instalasi .NET Core SDK terlebih dahulu. Silahkan merujuk pada link dibawah ini untuk panduan instalasi .NET Core.

Baca Juga:
Menjalankan .NET Core di Linux

Buka terminal emulator lalu jalankan perintah berikut untuk menginstal PeachPie.

$ dotnet new -i Peachpie.Templates::*

Verifikasi apakah PHP sudah tersedia pada .NET Core dengan perintah berikut.

$ dotnet new --help
...
Templates                                         Short Name               Language               Tags
---------------------------------------------------------------------------------------------------------------------------------------
Console Application                               console                  [C#], F#, PHP, VB      Common/Console
Class library                                     classlib                 [C#], F#, PHP, VB      Common/Library
WPF Application                                   wpf                      [C#]                   Common/WPF
WPF Class library                                 wpflib                   [C#]                   Common/WPF
...

Dapat terlihat jika bahasa PHP sudah tersedia dan bisa digunakan.

Menjalankan PHP pada .NET Core

Kita sampai pada bagian yang menyenangkan. Yaitu membuat sebuah script PHP yang mampu memanggil pustaka .NET. Buat sebuah project console baru dengan bahasa PHP.

$ dotnet new console -o hello-dotnet -lang PHP
The template "Console Application" was created successfully.

Sekarang masuk ke direktori project yang baru saja dibuat. Harusnya terdapat tiga file pada direktori tersebut.

$ cd hello-dotnet
$ ls -lh
total 12
-rw-rw-r-- 1 ubuntu ubuntu 230 Oct 19 03:33 README.md
-rw-rw-r-- 1 ubuntu ubuntu 389 Oct 19 03:33 hello-dotnet.msbuildproj
-rw-rw-r-- 1 ubuntu ubuntu  92 Oct 19 03:33 program.php

Script utama dari project ini adalah file program.php. Kita akan menggunakan file tersebut untuk menulis sebuah HTTP client sederhana yang memanfaatkan pustaka .NET.

$ vi program.php
GetResponse();
    $stream = new StreamReader( $response->GetResponseStream() );
    
    Console::WriteLine( "HTTP Response:\n" . $stream->ReadToEnd() );
}

main();

Inti dari script diatas adalah melakukan fetch sebuah halaman web yang disuplai pada argument pertama.

Lakukan kompilasi kode agar dapat dibaca oleh .NET CLR.

$ dotnet build

Kemudian jalankan aplikasi. Sebagai contoh disini akan melakukan fetch pada website https://ip4.seeip.org/ yang otomatis menampilkan alamat IP.

$ dotnet dotnet bin/Debug/netcoreapp3.0/hello-dotnet.dll https://ip4.seeip.org/
HTTP Response:
13.250.57.189

Keren. Dapat terlihat bahwa script PHP yang dibuat berjalan dengan sukses. Script tersebut berhasil melakukan fetch halaman web dan menampilkan hasilnya ke terminal.

Yang menarik adalah proses fetch halaman web menggunakan pustaka dari .NET. Begitu pula Input/Output stream juga menggunakan dari .NET. Sebuah script PHP tapi dapat memanggil pustaka .NET, hal yang sangat menyenangkan. :).