±¾ÎÄʵÀý½²ÊoÁËZend Framework+smartyÓè¡£ÖÏi¸ø´o¼Ò¹(C)´o¼Ò²Î¿¼£¬¾ßÌaÈçÏ£º
Ò»¡¢Zend Framework¼o½e
Zend FrameworkʹÓÃÄ£ÐÍ-ÊÓͼ-¿ØÖÆÆ÷£¨Model-View-Controller£¨MVC£(C)£(C)½a¹¹¡£Õa¸oÓÃÀ´°ÑÄaµÄ³ÌÐoÖÀe³É²»Í¬²¿ÖʹµÃ¿ª*¢ºÍά»¤±aµÃÈÝÒס£
ÔËÐÐZend FrameworkÐeÒª£ºPHP 5.1.4 (»o¸u¸ß) ¡¢Web *þÎñÆ÷Ö§³Ö mod_rewrite¹¦ÄÜ£¬±¾ÊµÀý²ÉÓÃApache¡£ ´ÓÕaÀihttp://framework.zend.com/downloadÏÂÔØ Zend Framework,ÓÐÁ½ÖÖ¸ñʽ.zip»oÕß.tar.gz¡£
¶þ¡¢Zend FrameworkµÄÅaÖÃ
1¡¢Ä¿Â¼½a¹¹
ËaÈ»Zend Framework ûÓÐÇ¿ÇoʹÓÃÒ»¸o±e×¼µÄĿ¼½a¹¹£¬µ«ÊÇ»¹ÊÇÓÐÒ»Ð(C)ͨÓõÄĿ¼½a¹¹¡£Õa¸oĿ¼½a¹¹¼ÙÉeÄaÍeÈ«¿ØÖÆApache µÄÅaÖᣣ¨ÏÂÃaeÒÔ±¾»u×oÀý×Ó£¬¸÷λÐe¸u¾Ý×Ô¼ºµÄÇe¿o½øÐиu¸Ä£¬ÎÒµÄ*þÎñÆ÷µÄ¸uĿ¼ָÏoµÄÊÇWebÎļþ¼Ð£(C)
ÒýÓÃ:
Web/
test/
/webapp
/controllers
/models
/templates
/templates_c
/library
/webroot
/images
/js
/css
ÎÒÃÇÒѾ°Ñ³ÌÐoÖеÄÄ£ÐÍ¡¢ÊÓͼºÍ¿ØÖÆÆ÷µÄÎļþÖÀeµ½²»Í¬µÄ×ÓĿ¼ÖС£Ö§³ÖµÄͼÏñ£¬½Å±¾ºÍCSS Îļþ±»´aeÅÔÚwebroot Ŀ¼ÏµIJ»Í¬×ÓĿ¼ÖС£ÏÂÔصÄZend Framework ÎļþÅÔÚ library Ŀ¼Ï¡£Èç¹uÎÒÃÇ»¹ÐeÒªÆaËu¿aÎļþ£¬¶¼¿ÉÒÔÅÔÚÕaÀi¡£ÔÚÕa¸oʵÀýÖУ¬ÎÒÃÇʹÓõ½ÁËSmartyÄ£°ae¼¼Êo£¬ËuÒÔSmarty µÄ¿aÎļþÎÒÃÇÒ²Ó¦¸Ã*ÅÔÚlibraryÎļþÏ£¡
2¡¢Æo¶¯Îļþ
ÎÒÃÇʹÓõ¥Ò»µÄÈe¿ÚÎļþindex.phpÀ´¶ÔÎÒÃǵijÌÐo½øÐÐÃÎÊ£¬Õa¸øÎÒÃÇÌa¹(C)Á˳ÌÐoÖÐËuÓÐÒ³ÃaeµÄÖÐÐĵa²¢È±£ÔËÐл¾³ÅaÖÃÕýÈ¡£ÎÒÃÇÓÃ.htaccess ÎļþÀ´ÊµÏÖÕa¸oÄ¿µÄ£¬Ìi¼Ó.htaccess ÎļþÔÚtest µÄ¸uĿ¼ÖУ¬ÄÚÈÝÈçÏ£º
RewriteEngine on
RewriteRule !".(js|ico|gif|jpg|png|css)$ index.php
2£(C)ÅaÖÃApache
Óe´Ëͬʱ£¬ÎÒÃÇ»¹ÐeÒª¶Ôapache½øÐÐÒ»Ð(C)ÉeÖ㬴o¿ªapacheµÄÅaÖÃÎļþ httpd.conf¡£
1¡¢ÕÒµ½¡°#LoadModule rewrite_module modules/mod_rewrite.so Õa¾a»°£¬°ÑÇ°ÃaeµÄ#È¥µo£¡
2¡¢È»ºoÔÙÕÒµ½¡°AllowOverride None ¸Ä³ÉAllowOverride All£¬ÖØÐÂÆo¶¯apache¼´¿É¡£
3¡¢Æo¶¯Îļþindex.php
index.php*ÅÔÚtestµÄ¸uĿ¼Ï£¬ÏÂÃaeÊÇindex.phpµÄÄÚÈÝ£º:
<?php
//´o¿ª´iÎoÌaʾ
error_reporting(E_ALL|E_STRICT);
//Ée¶¨Ê±Çø
date_default_timezone_set('Asia/Shanghai');
//Ö¸Ã÷ÒýÓÃÎļþµÄÂ*¾¶
set_include_path('.' .
PATH_SEPARATOR . './library/'.
PATH_SEPARATOR . './webapp/models/'.
PATH_SEPARATOR . get_include_path());
//±ØÐeÊÖ¶¯¼ÓÔØLoader.php
include "Zend/Loader.php";
//×Ô¶¯¼ÓÔØÀa£¬Ê¹ÓÃʱ£¬Ö±½ÓʵÀý»¯Ê¹ÓÃ
function __autoload($class){
Zend_Loader::loadClass($class);
}
//getInstance()*½*¨ÓÃÀ´»ñÈ¡Ç°¶Ë¿ØÖÆÆ÷ʵÀý
$frontController = Zend_Controller_Front::getInstance();
//Ée¶¨Ç°¶ËÂ*ÓÉÆ÷µÄ¹¤×÷Ŀ¼
$frontController->setControllerDirectory(array("default"=>'./webapp/controllers'));
//Å׳oÒi³£
$frontController->throwExceptions(true);
//ÉeÖûuµØÖ*,*½±aÒÔºourlµÄÌøתÓû§,.×¢Òa£¬Çø*Ö´oСд£¡
$frontController->setBaseUrl('/test');
//ʹÓÃsmartyÄ£°aeÐe¹Ø±Õ±¾ÉiµÄÊÓͼÖuÊÖ.
$frontController->setParam('noViewRenderer', true);
// ¹Ø±Õ´iÎoÌaʾ£¬*¢ÉuÇeÇo´iÎoʱºo£¬×ªµ½ErrorControllerµÄerrorAction¿ØÖÆÆ÷
//$frontController->throwExceptions(false);
//¶Ô¡£¡£½øÐÐ×¢²a
Zend_Registry::set('font', $frontController);
//------------ÅaÖÃSmartyÄ£°ae ----------------
include 'Smarty/Smarty.class.php';
/**
* ¶ÔsmartyÄ£°ae½øÐгoʼ»¯
**/
$views = new Smarty();
//$views->left_delimiter = "{{";
//$views->right_delimiter = "}}";
$views->compile_dir = './webapp/templates_c';
$views->cache_dir = './webapp/templates_c/cache_c';
$views->template_dir = "./webapp/templates";
function smarty_block_dynamic($param,$content,&$views)
{
return $content;
}
$views->register_block('dynamic','smarty_block_dynamic',false);
Zend_Registry::set('views', $views);
//¿ªÊ¼ÔËÐгÌÐo
$frontController->dispatch();
?>
4£(C)Æo¶¯Îļþ˵Ã÷
Zend Framework ÊÇÕaÑuÉe¼ÆµÄ£¬ËuÓеÄÎļþ±ØÐe°uº¬ÔÚ include_path ÖС£ÎÒÃÇÒ²°ÑÎÒÃǵÄÄ£ÐÍĿ¼°uº¬ÔÚ include path ÖУ¬ÕaÑuÎÒÃÇÒÔºo¾ÍÄܺÜÈÝÒ×¼ÓÔØÎÒÃǵÄÄ£ÐÍÀa¡£Ò»¿ªÊ¼£¬ÎÒÃDZØÐe include Zend/Loader.php£¬ÕaÑuÎÒÃǾÍÄÜÃÎÊZend_Loader Àa,ÔÚZend_Loader ÀaÖÐÓо²Ì¬½*¨Ê¹ÎÒÃÇÄܹ»¼ÓÔØÆaËuZend Framework Àa£¬ÀýÈ磺
Zend_Loader::loadClass('Zend_Controller_Front');
Zend_Loader::loadClass ¼ÓÔØÒѾÃuÃuµÄÀa¡£ËuÊÇ°ÑÏ»®Ïßת»»³É¾¶¸oÀeuÀ´ÊµÏֵģ¬²¢ÔÚ×iºo¼ÓÉÏ.php ºo׺¡£ÕaÑu£¬ÀaZend_Controller_Front ½«´ÓZend/Controller/font.php ¼ÓÔØ¡£Èç¹uÄaÔÚÄaµÄÀa¿aÀiʹÓÃÏaͬµÄÃuÃu¹aeÔo£¬¾Í¿ÉÒÔÓÃZend_Loader::loadCass()À´¼ÓÔØËuÃÇ¡£ÎÒÃÇÐeÒª¼ÓÔØ¿ØÖÆÆ÷ÀaºÍÂ*ÓÉÀa¡£
Ç°¶Ë¿ØÖÆÆ÷ÓÃÂÓÉÀaÀ´Ó³ÉaÇeÇoµÄ URL µ½Õý鵀 PHP º¯Êý£¬È»ºoÏÔʾҳÃae¡£ÎªÁËÄÜʹÂÓɹ¤×÷£¬ÐeÒª½a¾o URL µÄÄÄÒ»²¿ÖÊÇÖ¸Ïoindex.php µÄÂ*¾¶£¬ÕaÑuËu¾Í¿ÉÒÔÔÚÄǸoµaºoÃaeÑ°ÕÒurl ÔªËØ¡£
ÎÒÃÇÐeÒªÅaÖÃÇ°¶ËÂ*ÓÉÆ÷£¬ÕaÑuËu¾ÍÖªµÀ´ÓÄĸoĿ¼ÀiÕÒ³oÎÒÃǵĿØÖÆÆ÷¡£
$frontController = Zend_Controller_Front::getInstance();
$frontController->setControllerDirectory('./application/controllers');
ÉeÖÃÅ׳oÒi³££¬µ«ÊÇÔÚ*þÎñÆ÷ÕaeÕý¹¤×÷ÒÔºo£¬ÎÒÃDz»Ó¦¸ÃÏÔʾ´iÎoÐÅÏ¢¸øÓû§¿´¡£
$frontController->throwExceptions(true);
ÓÉÓÚÔÚ±¾ÊµÀýÖÐÎÒÃÇʹÓÃSmartyÄ£°ae¼¼Êo¡£ËuÒÔÎÒÃǹرÕZF±¾Éi×Ô´øµÄview¡£$frontController->setParam('noViewRenderer', true);ÉeÖûuµØÖ,½±aÒÔºoÉeÖÃurlÀ´½øÐÐÌøת¡£$frontController->setBaseUrl('/test');Zend_Registry::set('font', $frontController);½ÓÏÂÀ´£¬ÎÒÃǶÔSmarty½øÐÐÉeÖá£Ê×ÏÈÎÒÃÇÔÚÀa¿aÖÐÒýÓÃÁËSmarty.class.phpÕa¸oÀa¡£²¢ÇÒ¶ÔËuµÄÂ*¾¶½øÐÐÁËÉeÖã¬ÒÔ±aÈÃZFÖªµÀËuµÄλÖá£:
include 'Smarty/Smarty.class.php';
/**
* ¶ÔsmartyÄ£°ae½øÐгoʼ»¯
**/
$views = new Smarty();
//$views->left_delimiter = "{{";
//$views->right_delimiter = "}}";
$views->compile_dir = './webapp/templates_c';
$views->cache_dir = './webapp/templates_c/cache_c';
$views->template_dir = "./webapp/templates";
function smarty_block_dynamic($param,$content,&$views)
{
return $content;
}
$views->register_block('dynamic','smarty_block_dynamic',false);
ÔÚÕaÀi£¬ÎÒÃÇÓÃZFµÄ¶ÔÏo×¢²a±i(Registry)À´¶Ô$viewÀ´½øÐдaeÖu£¬ÕaÑu£¬ÔÚ³ÌÐoµÄÈκζÔ*½£¬ÎÒÃǶ¼¿ÉÒÔµ÷ÓÃËuÀ´½øÐвÙ×÷¡£Zend_Registry::set('views', $views);ÉeÖúÃÁËÒÔºo£¬ÔËÐгÌÐo¡£$frontController->dispatch();
Õa¸oʱºo£¬ÄaÈç¹uÔËÐÐhttp://127.0.0.1/test À´½øÐвaÊÔ¡£»a*¢ÏÖÓиo´iÎoÀaËÆ Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (index)' in¡Õa¸oÊÇÒoΪÎÒÃÇ»¹Ã»ÓÐÉeÖúÃÎÒÃdzÌÐo¡£
3¡¢ÉeÖóÌÐo
ÔÚÉeÖÃÎļþÒÔÇ°£¬Ài½aZend Framework ÈçºÎ×eÖ¯Ò³ÃaeºÜÖØÒª¡£Ã¿¸oÓ¦ÓóÌÐoµÄÒ³Ãae½Ð×o action £¬Ði¶a action ×e³É¿ØÖÆÆ÷¡£ÀýÈ磬¶ÔÓÚÕaÑuÒ»¸o¸ñʽµÄ URL http://localhost/test/news/view/id/1 À´Ëµ£¬¿ØÖÆÆ÷ÊÇnews, action ÊÇview,ºoÃaeµÄidºÍ1,*Ö±ðÊÇÍuÕa¸oactionView´«µÝµÄ²ÎÊýºÍÖµ¡£
Zend Framework ¿ØÖÆÆ÷°Ñ index ×÷Ϊһ¸oȱʡµÄaction ¶ø±£ÁoΪÌرðµÄaction¡£ÕaÑu£¬¶ÔÓÚhttp://localhost/test/news/ ÕaÑuµÄurl£¬ÔÚnews¿ØÖÆÆ÷ÀiµÄ index action½«±»Ö´ÐС£Zend Framework Ò²±£ÁoÁËÒ»¸oȱʡµÄ¿ØÖÆÆ÷£¬Ò²½Ð×oindex¡£ÕaÑu£¬http://localhost/test/ ½«Ö´ÐÐ index¿ØÖÆÆ÷Ï嵀 action index¡£
4¡¢ÉeÖÿØÖÆÆ÷
ÏÖÔÚ¿ÉÒÔÉeÖÿØÖÆÆ÷ÁË¡£ÔÚZend Framework Ài£¬¿ØÖÆÆ÷ÊÇÒ»¸o±ØÐe±»½Ð×o{Controller name}Controller µÄÀa¡£×¢Òa{Controller name}±ØÐeÒÔ´oд×Öĸ¿ªÍ¡£²¢ÇÒ£¬Õa¸oÀa±ØÐeÔÚ½Ð×o{Controller name}Controller.phpÕaÑuµÄÎļþÖУ¬Õa¸oÎļþ»¹±ØÐeÔÚÌض¨µÄ¿ØÖÆÆ÷Ŀ¼ÖС£Ç¿µ÷һϣ¬{Controller name}±ØÐeÒÔ´oд×Öĸ¿ªÍ²¢ÆaËu×Öĸһ¶¨ÊÇСд¡£Ã¿¸oactionÊÇÔÚ¿ØÖÆÆ÷ÀaÀiµÄpublic º¯Êý£¬Ãu×Ö±ØÐeÊÇ{action name}Action¡£ÔÚÕaÀi£¬{action name}Ó¦¸ÃÒÔСд×Öĸ¿ªÍ*¡£ÕaÑuÔÚÎļþ test/webapp/controllers/IndexController.php ÀiÎÒÃǵĿØÖÆÆ÷Àa½Ð×o IndexController£¬Î»Öãºtest/webapp/controllers/IndexController.php:
<?php
class IndexController extends Zend_Controller_Action
{
function init()
{
}
function indexAction()
{
}
function addAction()
{
}
}
?>
ÎÒÃÇÏÖÔÚÓÐÈý¸oÎÒÃÇÏeʹÓõÄaction£¬Ö±µ½ÎÒÃÇÉeÖúÃÊÓͼ£¬ËuÃDzŹ¤×÷¡£ÆaÖÐfunction initÊǸoÌØÊaµÄº¯Êý£¬¼oµ¥µÄ˵£¬Ëu¾ÍÊÇÔÚcontrollerÖеĹ¹Ôiº¯Êýʱµ÷Óõĺ¯Êý¡£
ÿ¸oactionµÄ URL ÈçÏ£º
http://localhost/test/ in IndexController::indexAction()
http://localhost/test/index/add in IndexController::addAction()
ÏÖÔÚ£¬ÎÒÃÇÔÚ³ÌÐoÀiÓиoÄܹ¤×÷µÄÂ*ÓÉÆ÷ºÍÿ¸oÒ³ÃaeµÄ action¡£
5¡¢ÉeÖÃÊÓͼ
ÒoΪ±¾ÊµÀýʹÓõĵÄÊÇSmartyÄ£°ae£¬ËuÒÔºÍZF±¾ÉiµÄViewÊÓͼÔÚʵÏÖ¹ý³ÌÖУ¬ÉÔ΢ÓеaÇø±ð£¡ÏÂÃaeÎÒÖ±½Ó½eÉÜÔÚZFÀiÊÇÈκÎʹÓÃSmartyµÄ¡£ÔÚʹÓÃSmarty֮ǰ£¬ÎÒÃÇÓ¦¸ÃÏÈÈ¡³oÔÚindex.phpÀi¶¨ÒaµÄ$view,²¢ÇÒ¶¨ÒaºÃ£¬ÐeÒªÔÚÄ£°aeÏÔʾµÄ±aÁ¿¡£:
class IndexController extends Zend_Controller_Action
{
var $views; /*Ä£°a¶ÔÏo*/
var $data; /*´«µÝÄ£°ae±aÁ¿µÄ¶ÔÏo*/
function init()
{
//ÄûØ×¢²a¹ýµÄ¶ÔÏo
$this->views = Zend_Registry::get('views');
}
function indexAction()
{
//¶¨ÒaÄ£°aeÏÔʾµÄ±aÁ¿
$data[£atitle¡a]=¨•hello world¨•£»
//´«µÝ±aÁ¿µ½Ä£°ae
$this->views->assign($data);
//ÏÔʾģ°ae
$this->views->display('index/index.tpl');
}
function addAction()
{
}
}
ÏÂÃaeÎÒÃÇ¿ªÊ¼×oÊÓͼÎļþ£¬ËuÃǵÄλÖÃÊÇtest/webapp/templates/index/index.tpl:
´uÂe:
{$title}
Õa¸oʱºo£¬ÊaÈehttp://127.0.0.1/test¿´¿´¡£Ó¦¸Ã»a³oÏÖ¡°hello world ÁË¡£
ÕaÑu£¬Ò»¸o¼oµ¥µÄʵÀý¾ÍÍe³ÉÁË¡£ÏÂÃaeÎÒÃǽaºÏXmlrpc¼¼ÊoÀ´ÊµÏÖÒ»¸oÉÔ΢¸´ÔÓÒ»µaµÄʵÀý£¡
Èý¡¢XMLRPC
1¡¢Ê²Ã´ÊÇXMLRPC
XMLRPC£¬¹ËÃu˼Òa,¾ÍÊÇÓ¦ÓÃÁËXML¼¼ÊoµÄRPC¡£ÄÇôʲôÊÇXMLºÍRPCÁË£¿
RPCÊÇRemote Procedure CallµÄËoд£¬Òe³ÉÖÐÎľÍÊÇÔ¶³Ì¹ý³Ìµ÷Óã¬ÊÇÒ»ÖÖÔÚ±¾µØµÄ»uÆ÷Éϵ÷ÓÃÔ¶¶Ë»uÆ÷ÉϵÄÒ»¸o¹ý³Ì£¨½¨£(C)µÄ¼¼Êo£¬Õa¸o¹ý³ÌÒ²±»´o¼Ò³ÆΪ¡°Ö²¼Ê½¼ÆËa £¬ÊÇΪÁËÌa¸ß¸÷¸oÖÁ¢»uÆ÷µÄ¡°»¥²Ù×÷ÐÔ ¶ø¢Ã÷³oÀ´µÄ¼¼Êo¡£
XMLºÍRPCÒ»ÑuÒ²ÊÇÒ»¸o¶«Î÷µÄËoд£¬Õa¸o¶«Î÷¾ÍÊÇeXtensible Markup Language£¬ÖÐÎÄÒa˼¾ÍÊÇ¿ÉÀ(C)Õ¹±e¼ÇÓiÑÔ£¬±e¼ÇÓiÑÔ¾ÍÊÇÄÇÖÖÓüaÀ¨ºÅ£¨<>)À¨À´À¨È¥µÄÄÇÖÖÓiÑÔ£¬±ÈÈç˵HTML¡£XMLµÄ¿ÉÀ(C)Õ¹ÐÔÒ²ÌaÏÖÔÚËuÖ»¶¨ÒaÁËÓiÑԵĸñʽ£¬¶ø²¢Ã»Óж¨Òa¹ý¶aµÄ¹Ø¼u×Ö£¬Ò²¾ÍÊÇͨ³£Ëu˵µÄ±e¼Ç£¨Tag£(C)£¬ËuÒÔÓû§¿ÉÒÔ×ÔÓɵØÑ¡Ôñ¶¨Òa±e¼Ç¡£ËuµÄÕaÖÖ×ÔÓɺͼoµ¥µÄÓi*¨¹aeÔoҲʹµÃËu¹aΪÁ÷´«£¬ÓÃÀ´±iʾ¸÷ÖÖÊý¾Ý¡£
2¡¢ÔÚZFÖÐʹÓÃXMLRPC
1)´´½¨IndexController.php
ÏÂÃaeÎÒÃÇÀ´Íe³ÉÒ»¸oʵÀý£¬ÎªÁ˽±aÆð¼u£¬¾Í²»½¨Á¢ÐµÄController£¬°Ñ¸Õ²ÅÎÒÃǽ¨Á¢µÄIndexControllerÐÞ¸Äһϣ¬¾ÍÄÜʹÓÃÁË£¡ÁiÍaÎÒÃÇ»¹ÐeÒª½¨Á¢Ò»¸oXMLRPCµÄþÎñ¶Ë³ÌÐo¡£Î»ÖÃÔÚWEBþÎñÆ÷µÄ¸uĿ¼ÉÏ£¨ÔÚ±¾»uÖУ¬Ò²¾ÍÊÇÔÚtestÎļþµÄÉϼ¶Ä¿Â¼ÖУ¬È¡ÃuΪ1.php£(C)£¬ÓÉÓÚXMLRPCʹÓõ½ÁËÀa¿a£¬ÎÒÃÇ»¹ÐeÒªÏÂÔØlibphpxmlrpcÅÔÚlibraryÎļþ¼ÐÏ£¡
ÎļþλÖãºtest/webapp/controller/IndexController.php:
class IndexController extends Zend_Controller_Action
{
var $views; /*Ä£°a¶ÔÏo*/
var $data; /*´«µÝÄ£°ae±aÁ¿µÄ¶ÔÏo*/
public function init()
{
//ÄûØ×¢²a¹ýµÄ¶ÔÏo
$this->views = Zend_Registry::get('views');
$this->font = Zend_Registry::get('font');
//µÃµ½»uµØÖ*
$this->baseurl=$this->font->getBaseUrl();
}
function indexAction()
{
@include "libphpxmlrpc/xmlrpc.inc";
@include "libphpxmlrpc/xmlrpcs.inc";
if (isset($_POST['var1']) && isset($_POST['var2']))
{
//´´½¨¿Í»§¶Ë
$client = new xmlrpc_client('http://127.0.0.1/1.php');
//´´½¨Ò»¸oʵÀý
@ $msg = new xmlrpcmsg("add", array(
new xmlrpcval($_POST['var1'], "int"),
new xmlrpcval($_POST['var2'], "int")));
//*¢ËÍÐÅÏ¢£¬
$response=$client->send($xmlrpc_message);£¬*þÎñÆ÷*µ»ØxmlrpcrespµÄÒ»¸oʵÀý
$retval = $client->send($msg);
if ($retval->faultCode())
{
print_r("*¢ÉuÒ»¸o´iÎo: ");
print_r("ÔÒo: " . htmlspecialchars($retval->faultString()));
}
else
{
//$retval->value()»ñÈ¡Ó¦´ðµÄxmlrpcval£¨Ò²¾ÍÊÇ*þÎñÆ÷¶Ë*µ»ØµÄ½a¹u£(C)£¬
$retval->value()->scalarval();µÃµ½ÃeÊoÓ¦´ð½a¹uµÄPHP±aÁ¿
$sum = $retval->value()->scalarval();
}
}
@$data['var1']=$_POST['var1'];
@$data['var2']=$_POST['var2'];
@$data['sum']=$sum;
@$data[£aaction¡a]= "$this->baseurl/index/";
//¹¹ÔiÍeÕuµÄurl¸øÄ£°ae
$time=date("Y-m-d H:i:s")
@$data['url']="$this->baseurl/index/add/id/$sum/time/$time";
/´«µÝ±aÁ¿µ½Ä£°ae
$this->views->assign($data);
//ÏÔʾģ°ae
$this->views->display('index/index.tpl');
}
function addAction()
{
$data['title']="ʵÑeÒ»ÏÂ";
//µÃµ½´«µÝµÄÖµ
$id=$this->_request->getParam("id");
$time=$this->_request->getParam("time");
$data['id']="$id";
$data['time']="$time";
$this->views->assign($data);
$this->views->display('index/add.tpl');
}
}
2£(C)´´½¨ÏÔʾģ°aeÎļþ
λÖãºtest/webapp/templates/index/index.tpl:
hello,ÏÂÃaeÑÝʾµÄÊÇÀuÓÃXmlrpcµ÷ÓÃÔ¶³ÌþÎñÆ÷½*¨µÄʵÀý£¡²¢ÇÒÎÒÃǰѵõ½µÄ½a¹u´«µÝµ½ÁiÍaµÄÒ»¸oº¯ÊýÖÐÈ¥£¡
´uÂe:
{if $sum}
µaһϿ´¿´£¡
{/if}
λÖ㺠test/webapp/templates/index/add.tpl:
ÏÖÔÚÊÇ{$time}
{$title}Äa¸Õ²Å´«µÝµÄÊÇ {$id}
3£(C)´´½¨XMLRPC*þÎñÆ÷¶Ë³ÌÐo
λÖãºweb/1.php:
<?php
@include ("libphpxmlrpc/xmlrpc.inc");
@include ("libphpxmlrpc/xmlrpcs.inc");
if ($_SERVER['REQUEST_METHOD'] != 'POST')
{
exit(0);
}
$add_sig = array(array($xmlrpcString, $xmlrpcInt, $xmlrpcInt));
$add_doc = "Add the two integer together";
function add($params)
{
//ÒýÈeÓû§´iÎo´uÂeÖµ
global $xmlrpcerruser;
//*µ»ØÒ»¸oPHPÊý×e
$val = php_xmlrpc_decode($params);
$ret = $val[0] + $val[1];
return new xmlrpcresp(new xmlrpcval($ret, "int"));
}
//´´½¨Ò»¸oxmlrpc_serverµÄʵÀý£º
$server = new xmlrpc_server(array(
"add" => array(
"function" => "add",
"signature" => $add_sig,
"docstring" => $add_doc
)));
?>
OK£¬ÏÖÔÚ´o¿ªhttp;//127.0.0.1/test/¿´¿´¡£¸Õ²Å½¨Á¢µÄÄǸoXMLRPCÓ¦¸ÃÒѾ½¨Á¢ÆðÀ´ÁË£¬ÊaÈeÊý×Ö£¬²aÊÔһϰɣ¡
¸u¶a¹ØÓÚzendÏa¹ØÄÚÈݸÐÐËȤµÄ¶ÁÕ߿ɲe¿´±¾Õ¾×¨Ìa£º¡¶Zend FrameWork¿o¼ÜÈeÃŽ̡̳¡¢¡¶[phpÓÅÐa¿ª¢¿o¼Ü×ܽa](http://www.jb51.net/Special/155.htm)¡¡¢¡¶Yii¿o¼ÜÈeÃż°³£Óü¼ÇÉ×ܽa¡¡¢¡¶ThinkPHPÈeÃŽ̡̳¡¢¡¶phpÃaeÏo¶ÔÏo³ÌÐoÉe¼ÆÈeÃŽ̡̳¡¢¡¶php+mysqlÊý¾Ý¿a²Ù×÷ÈeÃŽ̡̳¼°¡¶php³£¼uÊý¾Ý¿a²Ù×÷¼¼ÇÉ»a×Ü¡
Ï£Íu±¾ÎÄËuÊo¶Ô´o¼Ò»uÓÚzend framework¿o¼ÜµÄPHP³ÌÐoÉe¼ÆÓÐËu°iÖu¡£