实用代码段

    在开发中总会遇到各种各样的问题,我在下面分享一些实用代码片段给大家,尽管拿走,不用谢。

  /**
    * 将xml转为array
    * @param string $xml
    * @throws WxPayException
    */
public function FromXml($xml)
{  
   if(!$xml){
      throw new Exception("xml数据异常!");//这个异常可以自定义
   }
       //将XML转为array
       //禁止引用外部xml实体
       libxml_disable_entity_loader(true);
       $this->values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);       
   return $this->values;
}

/**
 * 格式化参数格式化成url参数
 */
public function ToUrlParams()
{
   $buff = "";
   foreach ($this->values as $k => $v)
   {
      if($k != "sign" && $v != "" && !is_array($v)){
         $buff .= $k . "=" . $v . "&";
      }
   }
   
   $buff = trim($buff, "&");
   return $buff;
}

/**
 * 生成签名 加密算法
 * @return 签名,本函数不覆盖sign成员变量,如要设置签名需要调用SetSign方法赋值
 */
public function MakeSign()
{
   //签名步骤一:按字典序排序参数
   ksort($this->values);
   $string = $this->ToUrlParams();
   //签名步骤二:在string后加入KEY
   $string = $string . "&key=".Config::KEY;//此处Config::KEY 这种写法你应该懂的
   //签名步骤三:MD5加密
   $string = md5($string);
   //签名步骤四:所有字符转为大写
   $result = strtoupper($string);
   return $result;
}

/**
 * 
 * 使用数组初始化对象
 * @param array $array
 * @param 是否检测签名 $noCheckSign
 */
public static function InitFromArray($array, $noCheckSign = false)
{
   $obj = new self();
   $obj->FromArray($array);
   if($noCheckSign == false){
      $obj->CheckSign();
   }
       return $obj;
}

下面是一些工作中常用到的函数,如果不懂的话可以去看手册,并加以练习,光看是记不住的。
array_key_exists()
array_values()
array_merge()
strlen
mb_strlen
intval
preg_match
还有curl,array,string,file系列函数等等


2016-09-22 11:18:06
nickname
content