Zend_XmlRpc_Server (Àº)´Â, ¿ÏÀüÇÑ ±â´ÉÀ» °¡Á³´Ù XML-RPC ¼¹öÀÔ´Ï´Ù. www.xmlrpc.com ±×¸®°í Á¦½ÃµÇ°í ÀÖ´Â »ç¾ç ¿¡ ÁذÅÇϰí ÀÖ½À´Ï´Ù. ÇÑÃþ ´õ system.multicall() ¸Þ¼Òµå¸¦ ½ÇÀåÇϰí ÀÖ¾î, ¸®Äù½ºÆ®¸¦ Á¤¸®ÇÑ´Ù (boxcarring of requests) ÀÏÀÌ »ý±é´Ï´Ù.
¹«¾ùº¸´Ù ±âº»ÀûÀÎ »ç¿ë¿¹´Â ´ÙÀ½°ú °°½À´Ï´Ù.
<?php
require_once 'Zend/XmlRpc/Server.php';
require_once 'My/Service/Class.php';
$server = new Zend_XmlRpc_Server();
$server->setClass('My_Service_Class');
echo $server->handle();
Zend_XmlRpc_Server (Àº)´Â ´Ù¾çÇÑ ÄÄÆÛ³ÍÆ®·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. ¼¹ö ÀÚ½ÅÀ¸·ÎºÎÅÍ ¸®Äù½ºÆ®, ¸®½ºÆù½º,fault ¿ÀºêÁ§Æ® µî ±¤¹üÀ§ÇÏ°Ô ÆÛÁö°í ÀÖ½À´Ï´Ù.
Zend_XmlRpc_Server (À»)¸¦ ±âµ¿ÇÏ·Á¸é ,
¿ì¼± ¼¹ö¿¡ Çϳª ÀÌ»óÀÇ Å¬·¡½º³ª ÇÔ¼ö¸¦ ¾ÆÅ¿Ä¡ ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
¾ÆÅ¿Ä¡ ÇÏ·Á¸é setClass()
¸Þ¼Òµå ¹×
addFunction()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
±âµ¿½Ã۸é, ´ÙÀ½¿¡ Zend_XmlRpc_Request
¿ÀºêÁ§Æ®¸¦
Zend_XmlRpc_Server::handle()
¿¡ °Ç³×ÁÝ´Ï´Ù.
¸¸¾à °Ç³×ÁÖÁö ¾Ê¾Ò´ø °æ¿ì´Â,Zend_XmlRpc_Request_Http
ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇØ php://input
(À¸)·ÎºÎÅÍÀÇ ÀÔ·ÂÀ» ¹Þ½À´Ï´Ù.
Zend_XmlRpc_Server::handle()
(Àº)´Â,
¸®Äù½ºÆ® ¸Þ¼Òµå¿¡ µû¶ó ÀûÀýÇÑ Çڵ鷯¿¡ 󸮸¦ ¹èºÐÇÕ´Ï´Ù.
±×¸®°í,
Zend_XmlRpc_Response
(À»)¸¦ °è½ÂÇÑ ¿ÀºêÁ§Æ®Àΰ¡
Zend_XmlRpc_Server_Fault
¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.
ÀÌ·¯ÇÑ ¿ÀºêÁ§Æ®´Â ¾î´ÀÂÊÀ̳ª __toString()
¸Þ¼Òµå¸¦ ½ÇÀåÇϰí ÀÖ¾î, Ÿ´çÇÑ XML-RPC XML ¸®½ºÆù½º¸¦ Á÷Á¢ Ãâ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.
Zend_XmlRpc_Server ±×·³, °³¹ßÀÚ°¡ ÇÔ¼ö³ª Ŭ·¡½º ¸Þ¼Òµå¸¦ XML-RPC ¸Þ¼Òµå·Î¼ ¾ÆÅ¿Ä¡ ÇÒ ¼ö ÀÖ°Ô µÇ¾î ÀÖ½À´Ï´Ù. ¾ÆÅ¿Ä¡ µÇ´Â ¸Þ¼ÒµåÀÇ Á¤º¸´Â Zend_Server_Reflection (À»)¸¦ »ç¿ëÇØ ÃëµæÇØ, ÇÔ¼ö³ª ¸Þ¼ÒµåÀÇ ÄÚ¸àÆ® ºí·ÏÀ¸·ÎºÎÅÍ ¸Þ¼ÒµåÀÇ ÇïÇÁ¹®°ú ¼¸íÀ» ÃëµæÇÕ´Ï´Ù.
XML-RPC ÀÇ ÇüÅ´ ¹Ýµå½Ã PHP ÀÇ ÇüÅÂ¿Í ÀÏ´ëÀÏ ´ëÀÀÇϰí ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ±×·¯³ª,@param (ÀÌ)³ª @return ÀÇ ÇàÀ» ±âÃÊ·Î, °¡´ÉÇÑ ÇÑ ÀûÀýÇÑ ÇüŸ¦ ÃßÃøÇÏ·Á°í ÇÕ´Ï´Ù. XML-RPC ÀÇ Çüžȿ¡´Â, Á÷Á¢ ´ëÀÀÇÑ´Ù PHP ÀÇ ÇüŰ¡ ¾ø´Â °Íµµ ÀÖ½À´Ï´Ù¸¸, ±× °æ¿ì´Â phpdoc Áß(¾È)¿¡¼ XML-RPC ÀÇ ÇüÅÂÀÇ ÈùÆ®¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº ÇüŰ¡ ÇØ´çÇÕ´Ï´Ù.
dateTime.iso8601 ... YYYYMMDDTHH:mm:ss Çü½ÄÀÇ ¹®ÀÚ¿
base64 ... base64 encode µÈ µ¥ÀÌÅÍ
struct ... ÀÓÀÇÀÇ ¿¬»ó ¹è¿
ÈùÆ®¸¦ ÁöÁ¤ÇÏ·Á¸é , ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù.
<?php
/**
* À̰ÍÀº »ùÇà ÇÔ¼öÀÔ´Ï´Ù
*
* @param base64 $val1 Base64 encode µÈ µ¥ÀÌÅÍ
* @param dateTime.iso8601 $val2 ISO ÀÏÀÚ
* @param struct $val3 ¿¬»ó ¹è¿
* @return struct
*/
function myFunc($val1, $val2, $val3)
{
}
PhpDocumentor (Àº)´Â ÆÄ¶ó¹ÌÅͳª µ¹¾Æ°¡ °ªÀÇ ÇüŸ¦ °ËÁõÇÏÁö ¾Ê½À´Ï´Ù. ±× ¶§¹®¿¡, À̰ÍÀÌ API ¹®¼¿¡ ¿µÇâÀ» ¹ÌÄ¥ °ÍÀº ¾ø½À´Ï´Ù. ±×·¯³ª, ÀÌ ÈùÆ®´Â ÇʼöÀÔ´Ï´Ù.¸Þ¼Òµå°¡ ÄÝ µÇ¾úÀ» ¶§¿¡, ÀÌ Á¤º¸¸¦ ±âÃÊ·Î ¼¹ö·Î °ËÁõÀ» ½Ç½ÃÇϱ⠶§¹®ÀÔ´Ï´Ù.
ÆÄ¶ó¹ÌÅͳª µ¹¾Æ°¡ °ªÀ¸·Î º¹¼öÀÇ ÇüŸ¦ ÁöÁ¤Çصµ ±¦Âú½À´Ï´Ù. XML-RPC ÀÇ »ç¾ç¿¡¼´Â,system.methodSignature ÇÏ ¸ðµç ¸Þ¼Òµå ¼¸í (Áï ÆÄ¶ó¹ÌÅÍ¿Í µ¹¾Æ°¡ °ªÀÇ Æí¼º) ÀÇ ¹è¿À» µ¹·ÁÁÖ°Ô µÇ¾î ÀÖ½À´Ï´Ù. º¹¼ö ÁöÁ¤ÇÏ´Â ¹æ¹ýÀº, Åë»óÀÇ PhpDocumentor ÀÇ °æ¿ì¿Í °°°Ô '|' ¿¬»êÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù.
<?php
/**
* This is a sample function
*
* @param string|base64 $val1 ¹®ÀÚ¿ ȤÀº base64 encode µÈ µ¥ÀÌÅÍ
* @param string|dateTime.iso8601 $val2 ¹®ÀÚ¿ ȤÀº ISO ÀÏÀÚ
* @param array|struct $val3 Normal ¼öÄ¡ ÷ÀÚ ¹è¿ ȤÀº ¿¬»ó ¹è¿
* @return boolean|struct
*/
function myFunc($val1, $val2, $val3)
{
}
±×·¯³ª, ÁÖÀÇ ÇØ¾ß ÇÒ°ÍÀÌ ÀÖ½À´Ï´Ù.º¹¼öÀÇ ¼¸íÀ» Á¤ÀÇÇϸé, ±×°ÍÀ» ÀÌ¿ëÇÏ´Â °³¹ßÀÚ¸¦ È¥¶õ½ÃÄÑ ¹ö¸³´Ï´Ù. ÀϹݷÐÀ¸·Î¼XML-RPC ÀÇ ¸Þ¼Òµå´Â º¹¼öÀÇ ¼¸íÀ» °¡ÁöÁö ¾Ê´Â ÆíÀÌ ÁÁÀ» °ÍÀÔ´Ï´Ù.
XML-RPC ¿¡´Â À̸§ °ø°£ÀÇ °³³äÀÌ ÀÖ½À´Ï´Ù.±âº»ÀûÀ¸·Î, À̰ÍÀº º¹¼öÀÇ XML-RPC ¸Þ¼Òµå¸¦ ´å ´Ü¶ôÀÇ À̸§ °ø°£¿¡¼ Á¤¸®ÇÏ´Â °ÍÀÔ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ´Ù¾çÇÑ Å¬·¡½º¿¡¼ Á¦°øµÇ´Â ¸Þ¼Òµå¸íÀÇ Ãæµ¹À» ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹·Î¼XML-RPC ¼¹ö´Â 'system' À̸§ °ø°£¿¡¼ ÀÌ·¯ÇÑ ¸Þ¼Òµå¸¦ Á¦°øÇÏ´Â °ÍÀÌ ±â´ëµÇ°í ÀÖ½À´Ï´Ù.
system.listMethods
system.methodHelp
system.methodSignature
³»ºÎÀûÀ¸·Î´Â, À̰͵éÀº Zend_XmlRpc_Server ÀÇ µ¿¸íÀÇ ¸Þ¼Òµå¿¡ ´ëÀÀÇϰí ÀÖ½À´Ï´Ù.
ÀÚ½ÅÀÌ Á¦°øÇÏ´Â ¸Þ¼Òµå¿¡ À̸§ °ø°£À» Ãß°¡ÇÏ°í ½ÍÀº °æ¿ì´Â, ÇÔ¼ö³ª Ŭ·¡½º¸¦ ¾ÆÅ¿Ä¡ ÇÒ ¶§ÀÇ ¸Þ¼Òµå·Î À̸§ °ø°£À» ÁöÁ¤ÇÕ´Ï´Ù.
<?php
// My_Service_Class ÀÇ ÆÛºí¸¯ ¸Þ¼Òµå´Â, ¸ðµÎ
// myservice.¸Þ¼Òµå¸í ±×¸®°í ¾×¼¼½º ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù
$server->setClass('My_Service_Class', 'myservice');
// ÇÔ¼ö 'somefunc' ÇÏ funcs.somefunc (À¸)·Î¼ ¾×¼¼½º Çϵµ·Ï(µíÀÌ) ÇÕ´Ï´Ù
$server->addFunction('somefunc', 'funcs');
´ëºÎºÐÀÇ °æ¿ì´Â, Zend_XmlRpc_Server (ÀÌ)³ª Zend_XmlRpc_Request_Http ¿¡ Æ÷ÇԵǴ µðÆúÆ®ÀÇ ¸®Äù½ºÆ®ÇüÀ» »ç¿ëÇϰÚÁö¿ä. ±×·¯³ª,XML-RPC (À»)¸¦ CLI (ÀÌ)³ª GUI ȯ°æµî¿¡¼ ¿òÁ÷ÀÌ°í ½ÍÀº °æ¿ìµµ ÀÖÀ» °ÍÀ̰í, ¸®Äù½ºÆ®ÀÇ ³»¿ëÀ» ·Î±×¿¡ ±â·ÏÇÏ°í ½ÍÀº °æ¿ìµµ ÀÖ°ÚÁö¿ä. ±×·¯ÇÑ °æ¿ì¿¡´Â,Zend_XmlRpc_Request (À»)¸¦ °è½ÂÇÑ µ¶ÀÚÀûÀÎ ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ÁÖÀÇÇØ¾ß ÇÒ Á¡Àº,getMethod() ¸Þ¼Òµå¿Í getParams() ¸Þ¼Òµå¸¦ ¹Ýµå½Ã ½ÇÀåÇØ¾ß ÇÑ´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù. À̰͵éÀº,XML-RPC ¼¹ö°¡ ¸®Äù½ºÆ®¸¦ ó¸®ÇÒ ¶§¿¡ ÇÊ¿äÇÕ´Ï´Ù.
¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¿Í °°ÀÌ,Zend_XmlRpc_Server (Àº)´Â µ¶ÀÚÀûÀÎ ¸®½ºÆù½º ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÙ ¼öµµ ÀÖ½À´Ï´Ù. µðÆúÆ®¿¡¼´Â Zend_XmlRpc_Response_Http ¿ÀºêÁ§Æ®°¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. À̰ÍÀº,XML-RPC ±×¸®°í »ç¿ëµÇ´Â ÀûÀýÇÑ Content-Type HTTP Çì´õ¸¦ ¼Û½ÅÇÕ´Ï´Ù.µ¶ÀÚÀûÀÎ ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÏ´Â Àå¸éÀ¸·Î¼´Â, ¸®½ºÆù½º¸¦ ·Î±×¿¡ ±â·ÏÇϰųª ȤÀº ¸®½ºÆù½º¸¦ Ç¥ÁØ Ãâ·Â¿¡ µ¹·ÁÁְųª¶ó°í Çß´ø °ÍÀÌ »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù.
µ¶ÀÚÀûÀÎ ¸®½ºÆù½º Ŭ·¡½º¸¦ »ç¿ëÇÏ·Á¸é ,handle() (À»)¸¦ ÄÝ Çϱâ Àü¿¡ Zend_XmlRpc_Server::setResponseClass() (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
Zend_XmlRpc_Server (Àº)´Â, ¹è¼ÛóÀÇ ¸Þ¼Òµå·Î ¹ß»ýÇÑ ¿¹¿Ü¸¦ Æ÷ÂøÇÕ´Ï´Ù. ¿¹¿Ü¸¦ Æ÷ÂøÇßÀ» °æ¿ì´Â,XML-RPC ÀÇ fault ¸®½ºÆù½º¸¦ »ý¼ºÇÕ´Ï´Ù. ±×·¯³ª, µðÆúÆ®¿¡¼´Â, ¿¹¿Ü ¸Þ¼¼Áö¿Í ÄÚµå´Â fault ¸®½ºÆù½º·Î ÀÌ¿ëµÇÁö ¾Ê½À´Ï´Ù.À̰ÍÀº, ´ç½ÅÀÇ Äڵ带 Áö۱â À§ÇÑ ÆÇ´Ü¿¡ ÀÇÇÏ´Â °ÍÀÔ´Ï´Ù. ´ëºÎºÐÀÇ ¿¹¿Ü´Â, Äڵ峪 ȯ°æ¿¡ °üÇÑ Á¤º¸¸¦ ÇÊ¿äÀÌ»óÀ¸·Î µå·¯³» ¹ö¸³´Ï´Ù (¾Ë±â ½¬¿î ¿¹¶ó°í, µ¥ÀÌŸº£À̽ºÀÇ Ãß»óÈ ·¹À̾îÀÇ ¿¹¿Ü¸¦ »ó»óÇØ º¸¼¼¿ä).
±×·¯³ª, ¿¹¿Ü Ŭ·¡½º¸¦ ÈÀÌÆ® ¸®½ºÆ®¿¡ µî·ÏÇÏ´Â °ÍÀ¸·Î, fault ¸®½ºÆù½º³»¿¡¼ ¿¹¿Ü¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ±×·¸°Ô ÇÏ·Á¸é , Zend_XmlRpc_Server_Fault::attachFaultException() (À»)¸¦ »ç¿ëÇØ ¿¹¿Ü Ŭ·¡½º¸¦ ÈÀÌÆ® ¸®½ºÆ®¿¡ °Ç³×ÁÝ´Ï´Ù.
<?php
Zend_XmlRpc_Server_Fault::attachFaultException('My_Project_Exception');
´Ù¸¥ ÇÁ·ÎÁ§Æ®ÀÇ ¿¹¿Ü¸¦ °è½ÂÇÑ ¿¹¿Ü Ŭ·¡½º¸¦ ÀÌ¿ëÇÑ´Ù¸é, ÀÏ·ÃÀÇ Å¬·¡½º±ºÀ» ÇÑ ¹ø¿¡ ÈÀÌÆ® ¸®½ºÆ®¿¡ µî·ÏÇÒ ¼öµµ ÀÖ½À´Ï´Ù. Zend_XmlRpc_Server_Exceptions (Àº)´Â Ç×»ó ÈÀÌÆ® ¸®½ºÆ®¿¡ µî·ÏµÇ¾î ÀÖ¾î °íÀ¯ÀÇ ³»ºÎ ¿¡·¯ (¸Þ¼Òµå°¡ ¹ÌÁ¤µµ¸®ÀÎ µî) (À»)¸¦ º¸°íÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÈÀÌÆ® ¸®½ºÆ®¿¡ µî·ÏµÇÁö ¾ÊÀº ¿¹¿Ü°¡ ¹ß»ýÇßÀ» °æ¿ì´Â, ÄÚµå '404', ¸Þ¼¼Áö 'Unknown error' ÀÇ falut ¸®½ºÆù½º¸¦ »ý¼ºÇÕ´Ï´Ù.
¸¹Àº Ŭ·¡½º¸¦ XML-RPC ¼¹ö ÀνºÅϽº¿¡ ¾ÆÅ¿Ä¡ Çϸé, ÀÚ¿øÀ» ´ë·®À¸·Î ¼ÒºñÇØ ¹ö¸³´Ï´Ù.°¢ Ŭ·¡½º¸¦ Á¶»çÇϱâ À§Çؼ ¸®Ç÷º¼Ç API (À»)¸¦ (Zend_Server_Reflection °æÀ¯·Î) »ç¿ëÇÒ Çʿ䰡 ÀÖ¾î, »ç¿ëÇÒ ¼ö ÀÖ´Â ¸ðµç ¸Þ¼ÒµåÀÇ ¼¸íÀ» ¼¹ö Ŭ·¡½º¿¡ Á¦°øÇÕ´Ï´Ù.
»ç¿ëÇÏ´Â ÀÚ¿øÀÇ ¾çÀ» °æ°¨Çϱâ À§Çؼ,Zend_XmlRpc_Server_Cache (À»)¸¦ ÀÌ¿ëÇØ ¸®Äù½ºÆ®°£¿¡ ¼¹ö Á¤ÀǸ¦ ij½¬ÇÒ ¼ö ÀÖ½À´Ï´Ù. __autoload() (¿Í)°ú Á¶ÇÕÇÏ´Â °ÍÀ¸·Î, À̰ÍÀº ÆÛÆ÷¸Õ½º¸¦ ±ØÀûÀ¸·Î Çâ»ó½Ãŵ´Ï´Ù.
»ç¿ë¿¹´Â ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.
<?php
require_once 'Zend/Loader.php';
require_once 'Zend/XmlRpc/Server.php';
require_once 'Zend/XmlRpc/Server/Cache.php';
function __autoload($class)
{
Zend_Loader::loadClass($class);
}
$cacheFile = dirname(__FILE__) . '/xmlrpc.cache';
$server = new Zend_XmlRpc_Server();
if (!Zend_XmlRpc_Server_Cache::get($cacheFile, $server)) {
require_once 'My/Services/Glue.php';
require_once 'My/Services/Paste.php';
require_once 'My/Services/Tape.php';
$server->setClass('My_Services_Glue', 'glue'); // glue. À̸§ °ø°£
$server->setClass('My_Services_Paste', 'paste'); // paste. À̸§ °ø°£
$server->setClass('My_Services_Tape', 'tape'); // tape. À̸§ °ø°£
Zend_XmlRpc_Server_Cache::save($cacheFile, $server);
}
echo $server->handle();
ÀÌ ¿¹¿¡¼´Â, ½ºÅ©¸³Æ®¿Í °°Àº µð·ºÅ丮¿¡ ÀÖ´Ù xmlrpc.cache (À¸)·ÎºÎÅÍ ¼¹öÀÇ Á¤ÀǸ¦ ÃëµæÇÏ·Á°í ÇÕ´Ï´Ù.ÃëµæÇÒ ¼ö ¾ø¾ú´ø °æ¿ì´Â, ÇÊ¿äÇÑ ¼ºñ½º Ŭ·¡½º¸¦ Àоîµé¿©, ±×°ÍÀ» ¼¹öÀÇ ÀνºÅϽº¿¡ ¾ÆÅ¿Ä¡ ÇØ, ±×¸®°í ±× Á¤ÀǸ¦ »õ·Î¿î ij½¬ ÆÄÀÏ¿¡ ±â·ÏÇÕ´Ï´Ù.
ÀÌÇÏÀÇ ¸î°³ÀÇ »ç¿ë¿¹·Î, °³¹ßÀÚ°¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¿É¼ÇÀ» ¼³¸íÇÕ´Ï´Ù. °¢ »ç¿ë¿¹´Â, ±×¶§±îÁö ¼Ò°³ÇÑ ¿¹¿¡ Ãß°¡ÇØ ³ª°¡´Â Çü½ÄÀÌ µË´Ï´Ù.
´ÙÀ½ÀÇ ¿¹´Â ÇÔ¼ö¸¦ XML-RPC ¸Þ¼Òµå·Î¼ ¾ÆÅ¿Ä¡ ÇØ, ¹ÞÀº ÄÝÀ» ó¸®ÇÕ´Ï´Ù.
<?php
require_once 'Zend/XmlRpc/Server.php';
/**
* °ªÀÇ MD5 sum (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù
*
* @param string $value md5sum (À»)¸¦ °è»êÇÏ´Â °ª
* @return string °ªÀÇ MD5 sum
*/
function md5Value($value)
{
return md5($value);
}
$server = new Zend_XmlRpc_Server();
$server->addFunction('md5Value');
echo $server->handle();
´ÙÀ½ÀÇ ¿¹´Â, Ŭ·¡½ºÀÇ ÆÛºí¸¯ ¸Þ¼Òµå¸¦ XML-RPC ¸Þ¼Òµå·Î¼ ¾ÆÅ¿Ä¡ ÇÕ´Ï´Ù.
<?php
require_once 'Zend/XmlRpc/Server.php';
require_once 'Services/Comb.php';
$server = new Zend_XmlRpc_Server();
$server->setClass('Services_Comb');
echo $server->handle();
´ÙÀ½ÀÇ ¿¹´Â, º¹¼öÀÇ Å¬·¡½º¸¦ °¢°¢ÀÇ À̸§ °ø°£¿¡¼ ¾ÆÅ¿Ä¡ ÇÕ´Ï´Ù.
<?php
require_once 'Zend/XmlRpc/Server.php';
require_once 'Services/Comb.php';
require_once 'Services/Brush.php';
require_once 'Services/Pick.php';
$server = new Zend_XmlRpc_Server();
$server->setClass('Services_Comb', 'comb'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é comb.* (À¸)·Î ÇÕ´Ï´Ù
$server->setClass('Services_Brush', 'brush'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é brush.* (À¸)·Î ÇÕ´Ï´Ù
$server->setClass('Services_Pick', 'pick'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é pick.* (À¸)·Î ÇÕ´Ï´Ù
echo $server->handle();
´ÙÀ½ÀÇ ¿¹´Â,Services_Exception ÀÇ »ó¼Ó Ŭ·¡½º¿¡ ´ëÇØ¼ ±× ÄÚµå¿Í ¸Þ¼¼Áö¸¦ falut ¸®½ºÆù½º·Î º¸°í½Ã۵µ·Ï(µíÀÌ) ÇÕ´Ï´Ù.
<?php
require_once 'Zend/XmlRpc/Server.php';
require_once 'Zend/XmlRpc/Server/Fault.php';
require_once 'Services/Exception.php';
require_once 'Services/Comb.php';
require_once 'Services/Brush.php';
require_once 'Services/Pick.php';
// Services_Exceptions (À»)¸¦ fault ¸®½ºÆù½º·Î º¸°í½Ã۵µ·Ï(µíÀÌ) ÇÕ´Ï´Ù
Zend_XmlRpc_Server_Fault::attachFaultException('Services_Exception');
$server = new Zend_XmlRpc_Server();
$server->setClass('Services_Comb', 'comb'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é comb.* (À¸)·Î ÇÕ´Ï´Ù
$server->setClass('Services_Brush', 'brush'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é brush.* (À¸)·Î ÇÕ´Ï´Ù
$server->setClass('Services_Pick', 'pick'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é pick.* (À¸)·Î ÇÕ´Ï´Ù
echo $server->handle();
´ÙÀ½ÀÇ ¿¹´Â, µ¶ÀÚÀûÀÎ ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇØ, ±×°ÍÀ» ¼¹ö¿¡ °Ç³×ÁÖ¾î ó¸®ÇÕ´Ï´Ù.
<?php
require_once 'Zend/XmlRpc/Server.php';
require_once 'Zend/XmlRpc/Server/Fault.php';
require_once 'Services/Request.php';
require_once 'Services/Exception.php';
require_once 'Services/Comb.php';
require_once 'Services/Brush.php';
require_once 'Services/Pick.php';
// Services_Exceptions (À»)¸¦ fault ¸®½ºÆù½º·Î º¸°í½Ã۵µ·Ï(µíÀÌ) ÇÕ´Ï´Ù
Zend_XmlRpc_Server_Fault::attachFaultException('Services_Exception');
$server = new Zend_XmlRpc_Server();
$server->setClass('Services_Comb', 'comb'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é comb.* (À¸)·Î ÇÕ´Ï´Ù
$server->setClass('Services_Brush', 'brush'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é brush.* (À¸)·Î ÇÕ´Ï´Ù
$server->setClass('Services_Pick', 'pick'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é pick.* (À¸)·Î ÇÕ´Ï´Ù
// ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÕ´Ï´Ù
$request = new Services_Request();
echo $server->handle($request);
´ÙÀ½ÀÇ ¿¹´Â, µ¶ÀÚÀûÀÎ ¸®½ºÆù½º Ŭ·¡½º¸¦ ÀÛ¼ºÇØ, ±×°ÍÀ» ¸®½ºÆù½º·Î¼ µ¹·ÁÁÝ´Ï´Ù.
<?php
require_once 'Zend/XmlRpc/Server.php';
require_once 'Zend/XmlRpc/Server/Fault.php';
require_once 'Services/Request.php';
require_once 'Services/Response.php';
require_once 'Services/Exception.php';
require_once 'Services/Comb.php';
require_once 'Services/Brush.php';
require_once 'Services/Pick.php';
// Services_Exceptions (À»)¸¦ fault ¸®½ºÆù½º·Î º¸°í½Ã۵µ·Ï(µíÀÌ) ÇÕ´Ï´Ù
Zend_XmlRpc_Server_Fault::attachFaultException('Services_Exception');
$server = new Zend_XmlRpc_Server();
$server->setClass('Services_Comb', 'comb'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é comb.* (À¸)·Î ÇÕ´Ï´Ù
$server->setClass('Services_Brush', 'brush'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é brush.* (À¸)·Î ÇÕ´Ï´Ù
$server->setClass('Services_Pick', 'pick'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é pick.* (À¸)·Î ÇÕ´Ï´Ù
// ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÕ´Ï´Ù
$request = new Services_Request();
// µ¶ÀÚÀûÀÎ ¸®½ºÆù½º¸¦ »ç¿ëÇÕ´Ï´Ù
$server->setResponseClass('Services_Response');
echo $server->handle($request);
´ÙÀ½ÀÇ ¿¹´Â, ¸®Äù½ºÆ®°£¿¡ ¼¹ö Á¤ÀǸ¦ ij½¬ÇÕ´Ï´Ù.
<?php
require_once 'Zend/XmlRpc/Server.php';
require_once 'Zend/XmlRpc/Server/Fault.php';
require_once 'Zend/XmlRpc/Server/Cache.php';
require_once 'Services/Request.php';
require_once 'Services/Response.php';
require_once 'Services/Exception.php';
require_once 'Services/Comb.php';
require_once 'Services/Brush.php';
require_once 'Services/Pick.php';
// ij½¬ ÆÄÀÏÀ» ÁöÁ¤ÇÕ´Ï´Ù
$cacheFile = dirname(__FILE__) . '/xmlrpc.cache';
// Services_Exceptions (À»)¸¦ fault ¸®½ºÆù½º·Î º¸°í½Ã۵µ·Ï(µíÀÌ) ÇÕ´Ï´Ù
Zend_XmlRpc_Server_Fault::attachFaultException('Services_Exception');
$server = new Zend_XmlRpc_Server();
// ¼¹ö Á¤ÀǸ¦ ij½¬·ÎºÎÅÍ ÃëµæÇÏ·Á°í ÇÕ´Ï´Ù
if (!Zend_XmlRpc_Server_Cache::get($cacheFile, $server)) {
$server->setClass('Services_Comb', 'comb'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é comb.* (À¸)·Î ÇÕ´Ï´Ù
$server->setClass('Services_Brush', 'brush'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é brush.* (À¸)·Î ÇÕ´Ï´Ù
$server->setClass('Services_Pick', 'pick'); // ¸Þ¼Òµå¸¦ ÄÝ ÇÏ·Á¸é pick.* (À¸)·Î ÇÕ´Ï´Ù
// ij½¬¿¡ º¸Á¸ÇÕ´Ï´Ù
Zend_XmlRpc_Server_Cache::save($cacheFile, $server));
}
// ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÕ´Ï´Ù
$request = new Services_Request();
// µ¶ÀÚÀûÀÎ ¸®½ºÆù½º¸¦ »ç¿ëÇÕ´Ï´Ù
$server->setResponseClass('Services_Response');
echo $server->handle($request);