/ Çağrı Sınıf Yürütme Zend XMLRPC hizmet

0 Cevap php

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?

0 Cevap