Ben bir sınıfın kendisi tarafından çalışır bir süreç var
Sözde Sınıf
class MyClass {
private $x;
private $y
// filename is INI file, each project have its own INI file
public function __construct($filename) {
// read and set value from INI file
// set some default values here as well
}
/**
* Start Process
*
* @param
* @return
*/
public function startProcess() {
// run process here
$y = $this->getX(); // and so on
echo "Process Started: ".$y."\n";
}
// This is the change for the XMLRPC
/*
public function startProcess($value) {
// run process here
echo "Process Started: ".$value."\n";
}
*/
/**
* Set X
*
* @param $x
* @return
*/
private function setX($x) {
$this->x = $x;
}
/**
* Get X
*
* @param
* @return $x
*/
private function getX() {
return $this->x;
}
// and so on
}
Sınıf yürütmek için ben böyle bir şey yapacağını
include('MyClass.php');
$process = new MyClass('file.ini');
$process->setX('blah');
$process->startProcess();
Şimdi bu sadece yöntem çağrısında bunu bir değişken geçecekti XMLRPC çağrısı ile başlatıldı olmak istiyorum. Ben bu tutorial takip ediyordu ama ben eğer, ben burada çalışıyorum nedir emin değilim. Şimdi yerine elden önce X ayar Ben sadece startProcess işlevine geçmek için gidiyorum
XMLRPC Sunucu:
ini_set("include_path", "/usr/share/php/libzend-framework-php");
require_once('Zend/XmlRpc/Server.php');
/**
* Start Process Wrapper
*
* @param
* @return
*/
function startProcessWrapper($value) {
include('MyClass.php'); // I have change the startProcess() to take a variable
$process = new MyClass('file.ini');
$process->startProcess('passing x here');
}
$server = new Zend_XmlRpc_Server();
$server->addFunction('startProcessWrapper', 'webservice');
echo $server->handle();
XMLRPC İşveren:
ini_set("include_path", "/usr/share/php/libzend-framework-php");
require_once('Zend/XmlRpc/Client.php');
$server = new Zend_XmlRpc_Client('http://localhost/xmlrpc_server.php');
$client = $server->getProxy();
$request = array(
array(
'methodName' => 'system.listMethods',
'params' => array()
),
array(
'methodName' => 'system.methodHelp',
'params' => array('webservice.startProcess')
),
array(
'methodName' => 'webservice.startProcess',
'params' => array('123456')
));
$response = $client->system->multicall($request);
echo print_r($response,true);
Burada elde yanıttır:
Array
(
[0] => Array
(
[0] => system.listMethods
[1] => system.methodHelp
[2] => system.methodSignature
[3] => system.multicall
[4] => webservice.startProcess
)
[1] => Start Process Wrapper
[2] => Array
(
[faultCode] => 623
[faultString] => Calling parameters do not match signature
)
)
Bu neden çalışmıyor? Sadece XMLRPC, önerileri benim sınıf sürecinin başlaması için bir yol bulmaya çalışıyorum?