<?php
/**
 * Created by PhpStorm.
 * User: boyer
 * Date: 2020/8/21
 * Time: 17:35
 */
namespace Customs\Dg\Hmzb\Ent;
use Customs\Dg\Hmzb\Ent\EntHead;
use Customs\Dg\Hmzb\Ent\EntBody;
class Xml{
    protected $head;
    protected $body =[];
    public function setHead(EntHead $headType){
        $this->head = $headType;
    }
    public function addPassportList(EntBody $listType){
        $this->body[]=$listType;
    }
    /**
     * Note:生成报文
     * User: Yao
     * Date: 2020/8/21
     * Time: 18:14
     * @return mixed
     */
    public function toXml(){
        $PassPortMessage = [
            'ENT_HEAD'=>$this->head,
        ];
        if(!empty($this->body)){
            $PassPortMessage['ENT_BODY']['ENT_LIST']=$this->body;
        }
        $xmlArray = $this->arrayToData($PassPortMessage);
        /*echo "xmlarr";
        var_dump($xmlArray);
        exit;*/
        return  \Common_ArrayToXml::convert($xmlArray,array(
            'rootElementName'=>'ENT',
            '_attributes'=>array(
                'xmlns'=>'http://www.chinaport.gov.cn/nfha'
            ),
        ),
            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;
    }
}