[PHP] Working with XML

Buat kamu yang membutuhkan solusi menghasilkan dokumen XML menggunakan PHP, saya memiliki solusi yang sudah saya pergunakan di beberapa pekerjaan saya selama ini.

Basically, saya adalah programmer Java yang terbiasa dengan konsep Object Oriented Programming (OOP), jadi solusi yang saya berikan juga seperti itu :) .

Kamu bisa mengunduh file-file yang diperlukan dari sini: xml-php (5)

Satu (1) class yang perlu kamu perhatikan adalah class xml/renderer/XMLRenderer.php:

public function __construct($rootName, $rootNS = null) {
     //menggunakan SimpleXML
     //$this->xmlEngine = new SimpleXMLEngine($rootName);
     //atau menggunakan DOMXML
     $this->xmlEngine = new DOMXMLEngine($rootName, $rootNS);
     $this->xmlEngine->init();
}
 

, kamu harus meng-extend class ini sesuai kebutuhan kamu sendiri, akan saya berikan contoh sebagai berikut:
1. AppVersionCheckXMLRenderer.php

 
<?php
include_once BASEDIR . '/xml/renderer/XMLRenderer.php';
 
/**
 * Description of AppVersionCheckXMLRenderer
 *
 * @author crew
 */
class AppVersionCheckXMLRenderer extends XMLRenderer {
 
    private $status;
    private $message;
    private $updateURL;
 
    public function __construct() {
        parent::__construct("versionCheck");
    }
 
    public function setStatus($status) {
        $this->status = $status;
    }
 
    public function setMessage($message) {
        $this->message = $message;
    }
 
    public function setUpdateURL($url) {
        $this->updateURL = $url;
    }
 
    public function buildXML() {
        parent::createElementAtRootWithValue("status", $this->status);
        parent::createElementAtRootWithValue("message", $this->message);
        parent::createElementAtRootWithValue("updateURL", $this->updateURL);
    }
}
?>
 

dan pemanggilan class renderer di atas sebagai berikut (asumsi saya memiliki class AppVersioningDao.php untuk pengecekan versi ke database):
2. versionCheck.php

 
<?php
include_once '../base.php';
include_once BASEDIR . '/dao/AppVersioningDao.php';
include_once BASEDIR . '/services/renderer/AppVersionCheckXMLRenderer.php';
 
if(isset ($_GET['v'])) {
    $version = $_GET['v'];
}
if(isset ($_GET['p'])) {
    $platform = $_GET['p'];
}
 
if(isset ($version) && isset ($platform)) {
    $dao = new AppVersioningDao();
    $currVersion = $dao->getCurrent($version, $platform);
    $latestVersion = $dao->getLatest($version, $platform);
    $status = 0;
    $downloadURL;
    $message = "";
    if($currVersion) {
        if($latestVersion) {
            if($currVersion->isObsolete()) {
                $status = 2;
                $message = "Anda harus menghapus aplikasi lama Anda dan menginstall aplikasi versi terbaru: " . $latestVersion->getVersion();
                $downloadURL = $latestVersion->getUpdateURL();
            } else {
                $status = 1;
                $message = "Terdapat update versi: " . $latestVersion->getVersion();
                $downloadURL = $latestVersion->getUpdateURL();
            }
        } else {
            $message = "Aplikasi Anda sudah paling mutakhir: " . $currVersion->getVersion();
        }
    } else {
        $status = -1;
        $message = "Versi tidak dikenal";
    }
} else {
    $status = -1;
    $message = "Versi tidak dikenal: Parameter versi dan platform dibutuhkan.";
}
$renderer = new AppVersionCheckXMLRenderer();
$renderer->setStatus($status);
$renderer->setMessage($message);
if(isset ($downloadURL)) {
    $renderer->setUpdateURL($downloadURL);
}
$renderer->buildXML();
header("Content-Type: text/xml");
echo $renderer->toXMLString();
?>
 

dan beginilah keluaran dokumen XML yang dihasilkan:
versioncheck XML

Kusuka

Dag dig dug debar hati bersuara,
Paras memerah bibirku tak bicara,
Tapi mataku tiada berdusta,
Dirimu kusuka

Saat kukecup mungil bibirmu,
Sumpahku itu kali pertama,
Masih kuat debar kurasa,
Bibirmu kusuka

Berdua kita terdiam,
Berpandangan sudah saling mengerti,
Namun tetap kuberanikan berkata,
Dirimu kucinta

H-8

Cinta itu urusan hati,
Hatimu hatiku hati kita berdua,
Tak sabar rasanya,
Lambat waktu kurasa,
Kapankah kita kan bersua,
Delapan hari lamanya dinda

Ini gw tulis H-8 sebelum ketemuan sama doi, di saat itu sedang tingginya hasrat untuk bertemu, rindu, yeah .. you got the point :) .

Manga Downloader First Release

After some time, finally manga-downloader version 1.0 is released, this is command line version, the Swing ones be released later after i find some 'not-busy' time of mine to do the coding. Regardsless of non-GUI-ness of this application i'm quite satisfied myself of this application, had try it for some time and nearly 3Gigs of manga downloaded.

Just see this application in manga-downloader page, download link also available there. Enjoy!!

p.s:

actually at start i use onemanga-downloader for the name for onemanga only, but since i had add mangahut also i've changed the name into manga-downloader.

Lawakan lokal versus luar

Hal yang berbeda dari lawakan lokal dan luar negeri kalo gw bilang adalah dari cara penyampaiannya: lawakan lokal lebih berusaha menampilkan hal-hal yang lucu lewat gerak tubuh yang sengaja dibuat konyol, pakaian dan tata rias yang mengesankan lucu, sedangkan lawakan luar (amerika) lebih banyak menggunakan permainan kata.

Waktu smp dulu, ada teman sekelas gw yang beberapa tahun sekolah (SD) di amrik, dia bilang sih emang sense humor orang barat ama orang Indonesia beda. Tentunya, kalo orang yang nggak nyambung nggak bakalan merasa lawakan itu lucu. Tadi gw baru nonton serial lama, "8 rules to date my teenage daughter", misalnya begini:

Roy: "I can't watch the sports that so violent" (sambil main video game)

Roy: "Yeah, I kill him, i kill him!"

Tapi sekarang, tepatnya mulai beberapa tahun yang lalu, beberapa acara komedi lokal banyak juga yang sudah mengadopsi gaya lawakan barat, mulai dari serial "Bajaj Bajuri", dan yang paling belakangan "Tawa Sutra XL", dan gw rasa gaya lawakannya masuk selera lokal, mungkin karena udah diadaptasi juga kali yah ..

:D

Hello World

System.out.println("Hello, World!!");