나는이의 모든 객체 지향 접근 방식을 권하고 싶습니다 : 각 데이터 유형에 대한 데이터
1) 만들기 인터페이스하는 각이
interface xmlSerializable {
public function toXML();
}
interface csvSerializable {
public function toCSV();
}
interface txtSeriablizable() {
public function toTXT();
}
2)는 객체 생성 변환해야하는 방법 클라이언트 용으로 서로 다른 형식으로 serialize해야하는 데이터 유형을 나타내는 클래스 및 각 인터페이스가 implement
class Data implements xmlSerializeable { // I only implemented one for brevity
private $id = null;
private $stuff = null;
private $otherStuff = null;
private $stuffArray = array();
public __construct($id, $stuff, $otherStuff, $stuffArray) {
$this->id = $id;
$this->stuff = $stuff;
$this->otherStuff = $otherStuff;
$this->stuffArray = $stuffArray;
}
public function getId() { return $this->id; }
public function toXML() {
$output = '<?xml version="1.0" encoding="UTF-8"?>'."\n".
'<data>'."\n\t".
'<id>'.$this->id.'</id>'."\n\t".
'<stuff>'.$this->stuff.'</stuff>'."\n\t".
'<otherStuff>'.$this->otherStuff.'</otherStuff>'."\n\t".
'<stuffArray>'."\n\t\t";
foreach($this->stuffArray as $stuff) {
$output .= '<stuff>'.$stuff.'</stuff>'."\n\t\t";
}
$output .= '</stuffArray>'."\n".
'</data>';
return $output;
}
}
이제 SQL 쿼리를 받아들이고 Data
개체의 배열을 반환하는 DataFactory
을 만들어 데이터베이스에서 Data
개체를 만들 수 있습니다.
$df = new DataFactory($pdo);
$datas = $df->query('SELECT * FROM Data');
foreach($datas as $data) {
file_put_contents('/data/xml/'.$data->getId().'.xml', $data->toXML());
// You can add other formats here in the above fashion
}
나는 접근 방식을 좋아하고 (물론 밖으로 생각하지 않지만) 나는 처음에 이런 일을하고 싶어 : 그러한 직렬화는, 당신이 각 형식에 대한 구현 된 메서드를 호출합니다. 그러나 문제의 일부는 30-40 가지 형식이있을 수 있으며 시간이 갈수록 더 많아지는 것입니다. 예를 들어 .csv는 'value1, value2, value3 ...'처럼 보이기를 원하지만 다른 사이트에서는 'value1', 'value2', 'value3'...처럼 보이기를 원합니다. 누군가가 serialize 함수 (PHP 프로그래머가 아닌 사람)를 변경하는 방법. – pzuraq
[Wikipedia] (http : //en.wikipedia.org/wiki/Comma-separated_values)를 사용하는 경우 CSV 문서의 인용 값은 옵션이 아닌 필수 사항입니다. PHP는 적절한 CSV 데이터를 출력하는 기능을 가지고 있습니다 ([fputcsv()] (http://php.net/fputcsv)를 참조하십시오.하지만 메모리와 함께 사용하려면 스트림을 만들어야합니다). 고객이 CSV 표준을 준수하는 기능을 사용하여 데이터를 파싱하는 한 개인의 필요에 맞추는 것에 대해 걱정할 필요가 없습니다. –
표준에 미치지 못할 수도 있습니다. CSV가 표준이지만, 지금까지받은 각 XML 템플릿은 다른 템플릿과 근본적으로 다릅니다. 파이프로 구분 된 값은 큰 차이가없는 것 같습니다. – pzuraq