ndexondeck/soapbuilder

强大的SOAP/XML构建器

v1.0.0 2018-04-17 05:35 UTC

This package is not auto-updated.

Last update: 2024-09-18 21:11:21 UTC


README

Soap builder是一个PHP OOP库,可以帮助您轻松且清晰地构建任何形式的XML字符串。它主要利用PHP的魔术方法,通过它们直观地设置XML标签。

Total Downloads

安装

使用Composer安装

composer require ndexondeck/soapbuilder

文档将很快提供,但在此之前,请查看一些示例

  • 构建一个简单的SOAP请求
  • $soapBuilder = new Builder();
    
    $soapBuilder->soap__Header = new Payload();
    
    $soapBuilder->Body = new Payload();
    $soapBuilder->Body->Username = new Payload('ndxondeck@gmail.com');
    $soapBuilder->Body->Password = new Payload('ndex4Jesus');
    
    echo $soapBuilder->getXml();

  • 构建一个更复杂的SOAP请求
  •  $soapBuilder = new Builder('soap',[
            "tem"=>"http://tempuri.org/",
            "sms"=>"http://schemas.datacontract.org/2004/07/SMSAppws",
            "wsa"=>"http://schemas.xmlsoap.org/ws/2004/08/addressing",
        ],'1.2');
    
    $soapBuilder->soap__Header = new Payload();
    $soapBuilder->soap__Header->wsa__Action = new Payload('http://tempuri.org/IService/SendMessage',[
        "xmlns:wsa"=>"http://www.w3.org/2005/08/addressing"
    ]);
    $soapBuilder->soap__Header->wsa__To = new Payload('https://sms.sender.example/Service.svc',[
        "xmlns:wsa"=>"http://www.w3.org/2005/08/addressing"
    ]);
    
    $soapBuilder->soap__Body = new Payload();
    $soapBuilder->soap__Body->tem__SendMessage = new Payload();
    $soapBuilder->soap__Body->tem__SendMessage->tem__message = new Payload();
    $soapBuilder->soap__Body->tem__SendMessage->tem__message->sms__Message = new Payload($msg);
    $soapBuilder->soap__Body->tem__SendMessage->tem__message->sms__MobileNo = new Payload($phone);
    
    echo $soapBuilder->getXml();

  • 构建一个简单的XML字符串
  • $xmlBuilder = (new SoapBuilder())->setAsXml()->setVersion('1.0');
    $xmlBuilder->SearchCriteria = new Payload();
    $xmlBuilder->SearchCriteria->UserName = new Payload('John');
    
    echo $xmlBuilder->getXml();

  • 构建一个更复杂的XML字符串
  • $xmlBuilder = new SoapBuilder();
    $xmlBuilder->setVersion('1.0')->setAsResponse()->setAsXml();
    $xmlBuilder->Response = new Payload();
    $xmlBuilder->Response->ResponseCode = new Payload('00');
    $xmlBuilder->Response->UserList = new PayloadCollection('Department');
    
    $user_count = 0;
    if(!empty($results)){
        foreach ($results as $department){
    
            $collection = new PayloadCollection('User',['Id'=>$department['id'], 'Name'=>$department['name']]);
    
            $this_count = 0;
            foreach ($department['users'] as $user){
                $collection->append($user,[],true);
                $user_count++;
                $this_count++;
            }
    
            if($this_count > 0){
                $xmlBuilder->Response->UserList->Department = $collection;
            }
        }
    }
    
    $xmlBuilder->Response->UserList->setElementAttributes(['TotalAvailable'=>$user_count]);
    
    echo $xmlBuilder->getXml();