0

这是一个简化的我知道下面的代码,不是很干净,但用于测试

代码1:

<?PHP
abstract class webservice
{
    protected  $url;    
    var $clientSoap;

    public function  affectation_base($url_p)
    {
        ini_set('soap.wsdl_cache_enabled',0);
        ini_set('soap.wsdl_cache_ttl',0);

        $this->url=$url_p;
        $clientSoap = new SoapClient('wdsl_adress');
    }

    public function get_fonction()
    {
        $clientSOAP = new SoapClient('wdsl_adress');
        $sestruct = new stdClass();
        $sestruct->value = "test";
        var_dump($clientSOAP->MD5($sestruct));
    }
    abstract protected function getValue();
}



class Webservice_2 extends webservice
{
  public function __construct($url_p)
  {
   $this->affectation_base($url_p); 
  }
  function getValue()
  {} 
}

$wbs = new Webservice_2('wdsl_adress');  
$wbs->getValue();
$wbs->get_fonction();
?>

代码2:

<?PHP
abstract class webservice
{
    protected  $url;    
    var $clientSoap;

    public function  affectation_base($url_p)
    {
        ini_set('soap.wsdl_cache_enabled',0);
        ini_set('soap.wsdl_cache_ttl',0);

        $this->url=$url_p;
        $clientSoap = new SoapClient('wdsl_adress');
    }

    public function get_fonction()
    {
        $sestruct = new stdClass();
        $sestruct->value = "test";
        var_dump($clientSOAP->MD5($sestruct));
    }
    abstract protected function getValue();
}



class Webservice_2 extends webservice
{
  public function __construct($url_p)
  {
   $this->affectation_base($url_p); 
  }
  function getValue()
  {} 
}

$wbs = new Webservice_2('wdsl_adress');  
$wbs->getValue();
$wbs->get_fonction();
?>

“代码1”作品

“代码 2”不起作用:

PHP 致命错误:在第 20 行的 E:\test.php 中的非对象上调用成员函数 MD5()

20号线是var_dump();线

我不明白为什么使用$clientSOAP->MD5是一个问题正确的解决方案是什么?提前致谢

Ps:对不起,如果我英语说得很好,这不是我的语言

4

1 回答 1

1

数字 2 的正确代码是:

public function get_fonction()
{
    $sestruct = new stdClass();
    $sestruct->value = "test";
    var_dump($this->clientSOAP->MD5($sestruct));
}

因为$clientSOAP变量没有在代码 n°1 中定义

于 2013-09-19T11:42:36.453 回答