<?php
/**
 * Created by PhpStorm.
 * User: boyer
 * Date: 2020/8/21
 * Time: 17:35
 */
namespace Customs\Dg\Hmzb\InvtSb;
class Xml{
    protected $PassportHead;
    protected $PassportList =[];
    protected $PassportAcmp =[];
    protected $DelcareFlag =0;
    //protected $OperCusRegCode='441966000N';//操作卡的海关十位
    public function setPassportHead(PassportHead $headType){
        $this->PassportHead = $headType;
    }
    public function addPassportList(PassportList $listType){
        $this->PassportList[]=$listType;
    }
    public function addPassportAcmp(PassportAcmp $passportAcmp){
        $this->PassportAcmp[] = $passportAcmp;
    }
    public function setDelcareFlag($flag){
        $this->DelcareFlag = $flag;
    }
    /**
     * Note:生成报文
     * User: Yao
     * Date: 2020/8/21
     * Time: 18:14
     * @return mixed
     */
    public function toXml(){
        $PassPortMessage = [
            'PassportHead'=>$this->PassportHead,
        ];
        if(!empty($this->PassportList)){
            $PassPortMessage['PassportList']=$this->PassportList;
        }
        if(!empty($this->PassportAcmp)){
            $PassPortMessage['PassportAcmp']=$this->PassportAcmp;
        }
        $data=[
                'BussinessData'=>[
                    'PassPortMessage'=>$PassPortMessage,
                    'DelcareFlag'=>$this->DelcareFlag,
                ]
        ];
        $xmlArray = $this->arrayToData($data);
        /*echo "xmlarr";
        var_dump($xmlArray);
        exit;*/
        return  \Common_ArrayToXml::convert($xmlArray,array(
            'rootElementName'=>'DataInfo',
            '_attributes'=>array(
                'version'=>'1.0'
            ),

        ),
            true,
            'UTF-8',
            '1.0',
            [
                'formatOutput' => false,
                'encoding'=>'UTF-8'
            ]
        );
    }
    private function arrayToData($data){
        $return = array();
        foreach ($data as $key=>$value){
            if(is_array($value)){
                $return[$key] = $this->arrayToData($value);
            }elseif(is_object($value)){
                $return[$key] = $value->toArray();
            }else{
                $return[$key] = $value;
            }
        }
        return $return;
    }
}