2013-09-19 2 views
0

Вот упрощённые Я знаю код, который следует, не идеально чистый, но для тестаструктура классов с использованием SoapClient

Code1:

<?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(); 
?> 

" Code1 "

" Код2 "не работает:

PHP Фатальная ошибка: Вызов функции-члена MD5() на не-объект в E: \ test.php в строке 20

Line 20 является var_dump(); линия

Я не понимаю, почему использование $clientSOAP->MD5 является проблемой Какое правильное решение? Заранее спасибо

Ps: простите меня, если я говорю очень хорошо английский, это не мой язык

ответ

1

Правильный код номер 2:

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

, так как переменная $clientSOAP не определенные в коде n ° 1

Смежные вопросы