>  기사  >  백엔드 개발  >  php-app 인터페이스 구현(json 및 xml)

php-app 인터페이스 구현(json 및 xml)

WBOY
WBOY원래의
2016-07-30 13:31:441310검색

1. 리뷰

이전 글에서는 mysql을 캡슐화하는 객체 클래스에 대해 알아보았습니다!

2. 이 글에서는 json 데이터와 xml 데이터를 생성하는 앱 인터페이스 클래스를 캡슐화합니다.

3. 이해하고 숙달하세요. 🎜>

3.1 xml과 json의 차이점

xml: 확장 마크업 언어: 데이터를 표시하고 데이터 유형을 정의할 수 있으며 데이터 형식이 명확하고 읽기 쉽습니다.

json: 간단한 데이터 교환 형식, 빠른 전송,

3.2 앱 인터페이스 및 데이터

데이터 가져오기: 데이터베이스 또는 캐시에서 데이터를 가져옵니다(캐시에 있는 데이터일 수 있음)

데이터 제출: GET 또는 POST 메서드를 통해 데이터를 제출합니다. >



                                                                                                                                             팁 정보: 메시지
반환 데이터: 데이터

3.4 예약된 작업 및 캐시(여기에는 캡슐화되지 않음)

캐시: 정적 캐시, Memcache 및 Redis 캐싱 기술

예약 작업: corntab



4. 캡슐화

4.1 json 캡슐화


                                                                                         ~     4.2 xml 패키징

조합된 문자열(간단)

시스템 사용 방법

4.3 구현 클래스



4.4 호출

url을 통해 구현 , 표시 데이터 유형은 xml, json, 배열이 될 수 있습니다!

test.php는 다음과 같이 구현됩니다.

<?php

//header("Content-type:text/html;charset=utf-8");

class Response{
	
	const JSON=&#39;json&#39;;
	/**
	 * 01.综合通信入口
	 * @param int $code
	 * @param string $msg
	 * @param array $data
	 * @param string $type
	 */
	public static function show($code,$msg=&#39;&#39;,$data=array()){
		
		if(!is_numeric($code)){
			return &#39;&#39;;
		}
		//如果url上传参了,去参数的类型,否则取得默认值!
		$type=isset($_GET[&#39;type&#39;])?$_GET[&#39;type&#39;]:self::JSON;
		
		
		$result=array(
				&#39;code&#39;=>$code,
				'msg'=>$msg,
				'data'=>$data
		);
		if($type=='json'){
			self::jsonEncode($code,$msg,$data);
			exit();
		}elseif ($type=='xml'){
			self::xmlEncode($code,$msg,$data);
			exit();
		}elseif ($type='array'){
			var_dump($result);
			exit();
		}
		
	}
	
	/**
	 * 02.按json方式输出 通信数据
	 * @param int $code 状态码
	 * @param string $msg 提示信息
	 * @param array $data 数据
	 * retrun string 
	 */
	public static function jsonEncode($code,$msg='',$data=array()) {
		header("Content-Type:text/json");
		#判断状态码
		if(!is_numeric($code)){
			return '';
		}
		$result=array(
				'code'=>$code,
		        'msg'=>$msg,
				'data'=>$data
		);
		
		echo json_encode($result);
		exit();
	}
	
	
    /**
     * 03.封装xml 输出通信数据
     * @param unknown $code
     * @param unknown $msg
     * @param unknown $data
     */
	public static function xmlEncode($code,$msg='',$data=array()){
		
		
		if(!is_numeric($code)){
           return '';
		}

		$result=array(
				'code'=>$code,
				'msg'=>$msg,
				'data'=>$data
		);
		
		header("Content-Type:text/xml");
		$xml="<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>";
		$xml.="<root>";
		$xml.=self::xmlToEncode($result);
		$xml.="</root>";
		echo $xml;
		
		exit();
	}
	
	/**
	 *04. 拼装 xml数据
	 * @param array $data
	 * @return string
	 * 使用递归,判断是不是数组,是数组继续调用循环
	 * xml的 节点不能为 数字,用item代替
	 */
	public  static function xmlToEncode($data){
		$xml=$attr='';
		foreach ($data as $key=>$value){
			if(is_numeric($key)){
				$attr="id='{$key}'";
				$key="item";
			}
			
			
			$xml.="<{$key} {$attr}>";
			$xml.=is_array($value)?self::xmlToEncode($value):$value;
			$xml.="</{$key}>";
		}
		return $xml;
	}
	
}

?>

5. 이전 글의 mysql 데이터베이스 연결 종합 구현: 데이터 캡슐화

6. appUtil.php 다운로드

http://localhost:8081/appInterface/test.php?type=json

http://download.csdn.net/detail/lablenet/ 8995987

require_once 'appUtil.php';
$arr=array(
		'id'=>1,
		'name'=>'yuan',
		'age'=>23,
		'location'=>'hpu'
);

$arr1=array(1,4,5,2,6,3);

Response::jsonEncode(200,'success',$arr);

저작권: 이 글은 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.

위 내용은 관련 내용을 포함하여 php-app 인터페이스 구현(json 및 xml)을 소개한 내용이므로 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.