Rumah php教程 php手册 Zend Framework应用程序内容转换为xml的插件

Zend Framework应用程序内容转换为xml的插件

Jun 13, 2016 am 11:37 AM
framework xml zend untuk kandungan apl pemalam daripada Tukar

在这一篇博文中Thijs Feryn通过实现Zend_Controller_Plugin_Abstract的hook方法,在原程序没有使用context switching控制器助手的情况下,将返回的内容响应转为为特定的XML格式

地址:http://blog.feryn.eu/2009/05/converting-your-zend-framework-mvc-application-into-an-xml-webservice-using-one-single-plugin/

代码: Copy to Clipboard引用的内容:[www.bkjia.com] /**
* My_Plugin_Xml component
* Turns an Zend Framework MVC website into an XML webservice
*  File From Liehuo.Net
*/
/**
* My_Plugin_Xml class
*
* @author Thijs Feryn
*/
class My_Plugin_Xml extends Zend_Controller_Plugin_Abstract
{
/**
* Stores the front controller
*
* @var Zend_Controller_Front
*/
private $_front;
/**
* Stores the XML output in DOMDocument format
*
* @var DOMDocument
*/
private $_xml;
/**
* Class constructor
*/
public function __construct()
{
$this->_front = Zend_Controller_Front::getInstance();
$layout = Zend_Layout::getMvcInstance();
$layout->disableLayout();
}
/**
* Build DOMDocument to convert output to XML
*
* @param mixed $return
* @param Exception $exception
* @return string
*/
private function _getXML($return = null,Exception $exception = null)
{
$this->_xml = new DOMDocument('1.0', 'UTF-8');
$this->_xml->formatOutput = true;

$responseNode = $this->_xml->createElement('response');

$exceptionNode = $this->_xml->createElement('exception');
if(null !== $exception && $exception instanceof Exception ){
$exceptionNode->appendChild(
$this->_xml->createElement('message',
$exception->getMessage()
)
);
$exceptionNode->appendChild(
$this->_xml->createElement('code',
$exception->getCode()
)
);
$exceptionNode->appendChild(
$this->_xml->createElement('type',
get_class($exception)
)
);
}

$responseNode->appendChild($exceptionNode);
if(null !== $return){
$responseNode->appendChild(
$this->_serialize('return',$return)
);
} else {
$responseNode->appendChild(
$this->_xml->createElement('return')
);
}

$this->_xml->appendChild($responseNode);
return $this->_xml->saveXML();
}
/**
* Modify the HTTP response object
* Remove the HTML body, replace with XML and change the content-type
*
* @param mixed $return
* @param Exception $exception
*/
private function _setResponse($return = false,Exception $exception = null)
{
$this->getResponse()->setHeader('Content-Type','text/xml; charset=UTF-8');
$this->getResponse()->clearBody();
$this->getResponse()->setBody(
$this->_getXML($return,$exception)
);
}
/**
* Serialize a mixed value to XML in DOMElement format
* This method can be used recursively in case of objects and arrays
*
* @param string $name
* @param mixed $value
* @return DOMElement
*/
private function _serialize($name,$value)
{
if(is_array($value)){
$element = $this->_xml->createElement($name);
foreach ($value as $k=>$v){
if(is_numeric($k)){
$k = 'item';
}
$element->appendChild($this->_serialize($k,$v));
}
} elseif(is_object($value)){
$element = $this->_xml->createElement($name);
$reflection = new ReflectionObject($value);
$properties = $reflection->getProperties();
foreach ($properties as $property){
if($property->isPublic()){
$element->appendChild(
$this->_serialize(
$property->getName(),
$property->getValue($value)
)
);
}
}
}else{
$element = $this->_xml->createElement(
$name,
(string)$value
);
}
return $element;
}
/**
* preDispatch hook that retrieves if an Exception was thrown in the application
* If an exception is thrown, the exception is passed to the exception part of the XML output and script execution is terminated
*
* @param Zend_Controller_Request_Abstract $request
*/
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
if($this->getResponse()->isException()){
$exArray = $this->getResponse()->getException();
$this->_setResponse(null,$exArray[0]);
$this->getResponse()->sendResponse();
exit();
}
}
/**
* postDispatch hook that serializes the view object to XML by modifying the HTTP response
* If no exception was thrown script execution continues and the postDispatch method will be called
*
* @param Zend_Controller_Request_Abstract $request
*/
public function postDispatch(Zend_Controller_Request_Abstract $request)
{
$view = Zend_Controller_Action_HelperBroker::getExistingHelper('ViewRenderer')->view;
$this->_setResponse($view);
}
}
_getXML()产生特定的xml结构
_setResponse()设置响应的xml内容
_serialize()将返回的对象序列化为xml(使用递归)
preDispatch()判断是否有异常,如果有则只设置异常并终止脚本执行
postDispatch()返回响应

使用方法
$this->_front->registerPlugin(new My_Plugin_Xml());
--------

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menyambungkan Apple Vision Pro ke PC Cara menyambungkan Apple Vision Pro ke PC Apr 08, 2024 pm 09:01 PM

Set kepala Apple Vision Pro tidak serasi asli dengan komputer, jadi anda mesti mengkonfigurasinya untuk menyambung ke komputer Windows. Sejak pelancarannya, Apple Vision Pro telah mendapat sambutan hangat, dan dengan ciri-ciri canggih dan kebolehkendaliannya yang meluas, mudah untuk mengetahui sebabnya. Walaupun anda boleh membuat beberapa pelarasan padanya agar sesuai dengan PC anda, dan fungsinya sangat bergantung pada AppleOS, jadi fungsinya akan terhad. Bagaimanakah saya boleh menyambungkan AppleVisionPro ke komputer saya? 1. Sahkan keperluan sistem Anda memerlukan versi terkini Windows 11 (PC tersuai dan peranti Surface tidak disokong) Menyokong 64-bit 2GHZ atau pemproses pantas lebih pantas GPU berprestasi tinggi, kebanyakannya

Apl Shazam tidak berfungsi dalam iPhone: Betulkan Apl Shazam tidak berfungsi dalam iPhone: Betulkan Jun 08, 2024 pm 12:36 PM

Menghadapi masalah dengan apl Shazam pada iPhone? Shazam membantu anda mencari lagu dengan mendengarnya. Walau bagaimanapun, jika Shazam tidak berfungsi dengan betul atau tidak mengenali lagu itu, anda perlu menyelesaikannya secara manual. Membaiki apl Shazam tidak akan mengambil masa yang lama. Jadi, tanpa membuang masa lagi, ikut langkah di bawah untuk menyelesaikan isu dengan aplikasi Shazam. Betulkan 1 – Lumpuhkan Ciri Teks Tebal Teks tebal pada iPhone mungkin menjadi sebab mengapa Shazam tidak berfungsi dengan betul. Langkah 1 – Anda hanya boleh melakukan ini daripada tetapan iPhone anda. Jadi, bukalah. Langkah 2 - Seterusnya, buka tetapan "Paparan & Kecerahan" di sana. Langkah 3 - Jika anda mendapati bahawa "Teks Tebal" didayakan

Petua praktikal untuk menukar huruf Inggeris lebar penuh kepada bentuk separuh lebar Petua praktikal untuk menukar huruf Inggeris lebar penuh kepada bentuk separuh lebar Mar 26, 2024 am 09:54 AM

Petua praktikal untuk menukar huruf Inggeris lebar penuh kepada bentuk separuh lebar Dalam kehidupan moden, kita sering bersentuhan dengan huruf Inggeris, dan kita sering perlu memasukkan huruf Inggeris apabila menggunakan komputer, telefon bimbit dan peranti lain. Walau bagaimanapun, kadangkala kita menemui huruf Inggeris lebar penuh, dan kita perlu menggunakan bentuk separuh lebar. Jadi, bagaimana untuk menukar huruf Inggeris lebar penuh kepada bentuk separuh lebar? Berikut adalah beberapa petua praktikal untuk anda. Pertama sekali, huruf dan nombor Inggeris lebar penuh merujuk kepada aksara yang menduduki kedudukan lebar penuh dalam kaedah input, manakala huruf dan nombor Inggeris separuh lebar menduduki kedudukan lebar penuh.

Cara Memasang dan Menjalankan Apl Nota Ubuntu pada Ubuntu 24.04 Cara Memasang dan Menjalankan Apl Nota Ubuntu pada Ubuntu 24.04 Mar 22, 2024 pm 04:40 PM

Semasa belajar di sekolah menengah, sesetengah pelajar mengambil nota yang sangat jelas dan tepat, mengambil lebih banyak nota daripada yang lain dalam kelas yang sama. Bagi sesetengah orang, mencatat nota adalah hobi, manakala bagi yang lain, ia adalah satu keperluan apabila mereka mudah melupakan maklumat kecil tentang apa-apa perkara penting. Aplikasi NTFS Microsoft amat berguna untuk pelajar yang ingin menyimpan nota penting di luar kuliah biasa. Dalam artikel ini, kami akan menerangkan pemasangan aplikasi Ubuntu pada Ubuntu24. Mengemas kini Sistem Ubuntu Sebelum memasang pemasang Ubuntu, pada Ubuntu24 kita perlu memastikan bahawa sistem yang baru dikonfigurasikan telah dikemas kini. Kita boleh menggunakan "a" yang paling terkenal dalam sistem Ubuntu

Penjelasan terperinci tentang kaedah pelaksanaan menukar bulan PHP kepada bulan Inggeris Penjelasan terperinci tentang kaedah pelaksanaan menukar bulan PHP kepada bulan Inggeris Mar 21, 2024 pm 06:45 PM

Artikel ini akan memperkenalkan secara terperinci cara menukar bulan dalam PHP kepada bulan Inggeris, dan memberikan contoh kod khusus. Dalam pembangunan PHP, kadangkala kita perlu menukar bulan digital kepada bulan Inggeris, yang sangat praktikal dalam beberapa pemprosesan tarikh atau senario paparan data. Prinsip pelaksanaan, contoh kod khusus dan langkah berjaga-jaga akan diterangkan secara terperinci di bawah. 1. Prinsip pelaksanaan Dalam PHP, anda boleh menukar bulan digital kepada bulan Bahasa Inggeris dengan menggunakan kelas DateTime dan kaedah format. Tarikh

Bagaimana untuk menukar muzik qq kepada format mp3 Tukar muzik qq kepada format mp3 pada telefon mudah alih Bagaimana untuk menukar muzik qq kepada format mp3 Tukar muzik qq kepada format mp3 pada telefon mudah alih Mar 21, 2024 pm 01:21 PM

QQ Music membolehkan semua orang menikmati menonton filem dan menghilangkan kebosanan Anda boleh menggunakan perisian ini setiap hari untuk memenuhi keperluan anda dengan mudah Sebilangan besar lagu berkualiti tinggi tersedia untuk didengari oleh semua orang Lain kali anda mendengarnya, anda tidak memerlukan sambungan Internet Lagu yang dimuat turun di sini bukan dalam format MP3 dan tidak boleh digunakan pada platform lain Selepas lagu keahlian tamat, tiada cara untuk mendengarnya lagi , ramai rakan ingin menukar lagu ke dalam format MP3 Di sini editornya Anda sediakan kaedah supaya semua orang boleh menggunakannya! 1. Buka QQ Music pada komputer anda, klik butang [Menu Utama] di penjuru kanan sebelah atas, klik [Audio Transcoding], pilih pilihan [Tambah Lagu], dan tambah lagu yang perlu ditukar; lagu, klik untuk memilih Tukar kepada [mp3]

Bagaimana untuk menukar huruf Inggeris lebar penuh kepada huruf separuh lebar Bagaimana untuk menukar huruf Inggeris lebar penuh kepada huruf separuh lebar Mar 25, 2024 pm 02:45 PM

Cara menukar huruf Inggeris lebar penuh kepada huruf separuh lebar Dalam kehidupan harian dan kerja, kadangkala kita menghadapi situasi di mana kita perlu menukar huruf Inggeris lebar penuh kepada huruf separuh lebar, seperti semasa memasukkan kata laluan komputer, mengedit dokumen atau mereka bentuk susun atur. Huruf dan nombor Inggeris lebar penuh merujuk kepada aksara dengan lebar yang sama dengan aksara Cina, manakala huruf Inggeris separuh lebar merujuk kepada aksara dengan lebar yang lebih sempit. Dalam operasi sebenar, kita perlu menguasai beberapa kaedah mudah untuk menukar huruf Inggeris lebar penuh kepada huruf separuh lebar supaya kita boleh memproses teks dan nombor dengan lebih mudah. 1. Huruf Inggeris lebar penuh dan huruf Inggeris separuh lebar

Tutorial PHP: Bagaimana untuk menukar jenis int kepada rentetan Tutorial PHP: Bagaimana untuk menukar jenis int kepada rentetan Mar 27, 2024 pm 06:03 PM

Tutorial PHP: Cara Menukar Jenis Int kepada Rentetan Dalam PHP, menukar data integer kepada rentetan adalah operasi biasa. Tutorial ini akan memperkenalkan cara menggunakan fungsi terbina dalam PHP untuk menukar jenis int kepada rentetan, sambil memberikan contoh kod khusus. Gunakan cast: Dalam PHP, anda boleh menggunakan cast untuk menukar data integer kepada rentetan. Kaedah ini sangat mudah Anda hanya perlu menambah (rentetan) sebelum data integer untuk menukarnya menjadi rentetan. Di bawah ialah kod contoh mudah

See all articles