<?php

namespace lc\wechat\wxpay\database;

use lc\helpers\Helper;
use lc\wechat\wxpay\base\WxPayConfig;

/**
 * 数据对象基础类，该类中定义数据类最基本的行为，包括：计算/设置/获取签名、输出xml格式的参数、从xml读取数据对象等.
 */
class Base
{
    protected $values = [];

    /**
     * @desc    签名，本函数不覆盖sign成员变量，如要设置签名需要调用setSign方法赋值
     *
     * @return  string
     */
    public function setSign()
    {
        $sign                 = Helper::makeSign($this->values, WxPayConfig::$key);
        $this->values['sign'] = $sign;

        return $sign;
    }

    /**
     * 获取签名，详见签名生成算法的值
     */
    public function getSign()
    {
        return $this->values['sign'];
    }

    /**
     * 判断签名，详见签名生成算法是否存在.
     *
     * @return bool
     */
    public function isSignSet()
    {
        return array_key_exists('sign', $this->values);
    }

    /**
     * @desc 获取设置的值
     */
    public function getValues()
    {
        return $this->values;
    }
}
