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. :).