php
Membuat Template Engine Sederhana
Salah satu usaha yang dapat dilakukan untuk memisahkan antara logic dan presentation pada sebuah aplikasi php adalah dengan menggunakan template engine. Sudah banyak template engine siap pakai seperti Smarty, XTemplate, dan sebagainya.
Dalam tutorial kali ini saya akan menunjukkan cara membuat sebuah template engine yang sangat sederhana yang hanya terdiri dari beberapa baris php saja yang mudah-mudahan cukup mudah dipahami dan dipakai dan tentunya dapat berfungsi sebagai pemisah antara logic dan presentation.
Mozilla Firefox Download Count
Berikut ini adalah source code untuk mengambil dan menampilkan jumlah Mozilla Firefox yang sudah didownload.
Script akan mengambil data dari http://www.spreadfirefox.com/download_counter.php?ff=1 yang isinya adalah sebuah dokumen RSS. Dokumen tersebut lalu akan diproses oleh XML_RSS dan hasilnya ditampilkan melalui dokumen HTML.
- Informasi mengenai dokumen RSS tersebut saya dapatkan dari Idban Secandri.
- Demo
Membuat Web Service dengan PHP
Dalam tutorial kali ini, saya akan menjelaskan cara membuat server dan client web service dengan PHP. Web service yang akan kita buat adalah web service yang menyediakan layanan operasi-operasi dasar matematika.
Memproses Dokumen RSS dengan XML_RSS
Belakangan ini banyak situs di internet yang menawarkan fasilitas sindikasi data dengan mpenggunakan RSS. Dengan menggunakan RSS ini, kita dapat dengan mudah mengambil data dari situs lain dan menampilkannya di situs kita sendiri. Namun pembacaan dan pemrosesan format RSS itu dapat menjadi masalah tersendiri jika kita tidak tahu cara yang mudahnya.
PHP memiliki suatu repositori kelas-kelas yang dapat digunakan oleh kita selaku developer PHP yang disebut dengan PEAR (The PHP Extension and Application Repository). Salah satu paket yang ada dalam PEAR adalah XML_RSS yang dapat mempermudah hidup kita dalam memproses format RSS.
Persyaratan
Untuk menggunakan XML_RSS tentunya Anda harus sudah memiliki paket XML_RSS tersebut. Buatlah script di bawah ini untuk mengecek apakah Anda sudah memiliki paket XML_RSS atau belum.
<?
include('XML/RSS.php');
?>
Jalankan script tersebut dan lihat apa keluaran yang dihasilkan. Jika script tersebut mengeluarkan pesan kesalahan, berarti Anda belum memiliki paket XML_RSS. Mintalah kepada administrator komputer yang Anda gunakan untuk menginstallkan paket XML_RSS tersebut.
Jika Anda menggunakan komputer sendiri yang sudah terhubung dengan Internet, gunakanlah perintah di bawah ini untuk menginstall paket XML_RSS
pear install XML_RSS
Perlu diperhatikan bahwa paket XML_RSS tersebut memiliki ketergantungan dengan beberapa paket lain, sehingga Anda juga harus menginstall paket-paket tersebut terlebih dahulu. Anda akan diberitahu oleh script instalasi paket PEAR jika Anda membutuhkan paket lain untuk diinstall terlebih dahulu.
Pembacaan dokumen RSS
Ada tiga cara untuk menentukan dokumen yang akan dibaca oleh XML_RSS, yaitu dengan menyebutkan nama file yang berisi dokumen RSS, memberikan file handler untuk suatu dokumen RSS, dan memasukkan sebuah string yang berisi dokumen RSS.
Kondisi yang menyebabkan cara pertama atau kedua harus digunakan tidak berbeda jauh. Cara pertama atau kedua dapat digunakan jika Anda memiliki dokumen RSS yang terletak pada file lain (atau bahkan ada di sebuah situs web yang terpisah). Cara ketiga digunakan jika Anda memiliki sebuah variabel yang mengandung sebuah dokumen RSS yang ingin Anda proses.
Contoh penggunaan cara pertama
$rss = new XML_RSS('namafile.xml');
$rss->parse();
Contoh penggunaan cara kedua
$f = fopen('namafile.xml', 'r');
$rss = new XML_RSS($f);
$rss->parse();
Contoh penggunaan cara ketiga
$rss = new XML_RSS('');
$rss->setInputString($data_rss);
$rss->parse();
Setelah salah satu dari tiga cara di atas dilakukan, dokumen RSS Anda telah diproses dan siap untuk ditampilkan.
Menampilkan data dari dokumen RSS
Kelas XML_RSS memiliki 5 buah method yang dapat digunakan untuk menampilkan data dari dokumen RSS, yaitu getStructure(), getChannelInfo(), getItems(), getImages(), dan getTextInputs(). Dari kelima method tersebut, kita hanya akan menggunakan dua buah method, yaitu getChannelInfo() dan getItems().
Method getChannelInfo() digunakan untuk mendapatkan informasi umum mengenai dokumen RSS (data dari elemen channel pada dokumen RSS). Method ini akan mengeluarkan sebuah associative array yang berisi data-data yang dapat Anda gunakan, antara lain title, description, dan link.
Method getItems() digunakan untuk mendapatkan data-data yang ada dalam dokumen RSS. Method ini akan menghasilkan array yang masing-masing elemennya adalah suatu accosiative array yang berisi data title, link, pubDate, dan description.
Contoh implementasi
Script berikut akan membaca dokumen RSS dari http://fajran.net/blog/rss.php dan menampilkannya dalam bentuk HTML.
<?
include('XML/RSS.php');
$rss = new XML_RSS('http://fajran.net/blog/rss.php');
$rss->parse();
$channel = $rss->getChannelInfo();
$items = $rss->getItems();
?>
<html><head>
<title><?=$channel['title'];?></title>
</head><body>
<h1><a href="<?=$channel['link'];?>"><?=$channel['title'];?></a></h1>
<p><?=$channel['description'];?></p>
<?
for ($i=0; $i<count($items); $i++) {
?>
<h2><a href="<?=$items[$i]['link'];?>"><?=$items[$i]['title'];?></a></h2>
<p><?=$items[$i]['pubDate'];?></p>
<?=$items[$i]['description'];?>
<?
}
?>
Source code di atas dapat Anda lihat hasilnya melalui dengan membuka file memproses-rss.php.
Mudah bukan? Anda cukup mengetikkan sekitar 5 baris untuk memproses dan mengambil data dari sebuah dokumen RSS. Setelah itu, Anda dapat berkreasi lebih jauh lagi dalam memanfaatkan data yang terkandung dalam dokumen RSS tersebut.
Beres-beres
Yihaaa.. stelah bbrp lama. akhirnya gw ngoprek2 html/css/bBlog lagehhh.. tetep (mencoba dan harus) ngikutin web standard tentunya.. bukan sekedar tableless layout ™
Yang baru (ato gak begitu baru):
- Layout, tentunya
- Nambahin link kemana2.. tuk Junkers, nyontek dari situsnya Priyadi
- Semua tulisan yg ada di /web/tutorial dan /web/codes ada link nya juga
- Semua situs yg gw masukin ke social bookmarks gw masukin link nya juga (masih error kalo timeout pas ngebaca RSS nya, jadi gw matiin dulu)
- Nambahin section
- Markdown filter. Ternyata daripada BBCode, lebih enak yang ini.
- Gravatar plugin. Sigh.. mesti ngehack bBlognya..
Yang kurang:
- Shoutbox
- Ngebenerin skrip rss fetcher biar kalo timeout gak nampilin error. Kalo timeout baca dari cache ajah.. [done!]
- Ngebenerin semua postingan yg lama2 biar make Markdown
- Pernak-pernik tambahan..
apalagi ya?
update:
- Plugin tuk ngambil rss pake PEAR XML_RSS dan HTTP_Request.