[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(); ?>
