2014-03-14 4 views
0

내 보낸 OLAT 백업의 데이터가 포함 된 개체가 있습니다 (OLAT는 Java로 작성된 전자 학습 도구입니다).개체를 사용하여 폴더 구조 만들기

이제 'Moodle 백업 파일'이라는 또 다른 유형의 백업 파일을 만들어서 PHP로 작성된 다른 전자 학습 도구로 가져올 수 있습니다. 따라서 Moodle 백업에 필요한 폴더 구조를 만들고 해당 .xml 및 경로에 데이터를 쓰는 것이 내 계획입니다.

내가 모호하게 들린다는 것을 알고 있지만 내 질문은 다음과 같습니다. 이러한 파일을 만드는 가장 좋은 방법은 무엇입니까? 예를 들어,이 구조를 가진 .XML을해야합니다

<?xml version="1.0" encoding="UTF-8"?> 
<course id="8" contextid="78"> 
    <shortname>Test Course Short</shortname> 
    <fullname>Test Course Long</fullname> 
    <idnumber></idnumber> 
    <summary></summary> 
    <summaryformat>1</summaryformat> 
    <format>topics</format> 
    <showgrades>1</showgrades> 
    <newsitems>5</newsitems> 
    <startdate>1394668800</startdate> 
    <marker>0</marker> 
    <maxbytes>0</maxbytes> 
    <legacyfiles>0</legacyfiles> 
    <showreports>0</showreports> 
    <visible>1</visible> 
    <groupmode>0</groupmode> 
    <groupmodeforce>0</groupmodeforce> 
    <defaultgroupingid>0</defaultgroupingid> 
    <lang></lang> 
    <theme></theme> 
    <timecreated>1394632991</timecreated> 
    <timemodified>1394632991</timemodified> 
    <requested>0</requested> 
    <enablecompletion>0</enablecompletion> 
    <completionnotify>0</completionnotify> 
    <numsections>8</numsections> 
    <hiddensections>0</hiddensections> 
    <coursedisplay>0</coursedisplay> 
    <category id="1"> 
    <name>Miscellaneous</name> 
    <description>[email protected]@$</description> 
    </category> 
    <tags> 
    </tags> 
</course> 

나는이 기본 PHP와 같은 소리로 들리 겠지만 그것은 거의 그게 뭔지도 있습니다. 예를 들어 PHP로이 파일을 만드는 방법은 무엇입니까?

+2

simpleXML http://php.net/manual/en/book.simplexml.php. 그것은 많은 PHP XML 라이브러리 중 하나입니다 – aleation

+0

간단한 템플릿 엔진 (즉, 나뭇 가지)도 유용 할 수 있습니다. –

답변

0

필요한 무들 파일을 PHP 클래스 (공개 속성 포함)로 정의 할 수 있습니다.

namespace Moodle\Models; 
class Course { 
    protected $id; 
    protected $contextid; 

    public $shortname; 
    public $fullname; 
    ... 
} 

OLAT 콘텐츠로 무들 개체를 채우기 위해 약간의 OLAT2Moodle 변환기를 쓸 수 있습니다. 변환기는 OLAT 객체를 처리하고 무들 객체를 생성하는 몇 가지 기능을 가지고 있습니다. 이 경우 factory design pattern을 사용할 수 있습니다.

팩토리 메소드에서 간단한 배열을 사용하여 대상 속성의 소스 속성을 정의하고 일반 메소드를 사용하여 객체를 초기화 할 수 있습니다. 간단한 예.

function fillObject($sourceObject,$destinationObject,$conversationMap) { 
    foreach (conversationMap as $destinationAttribute => $sourceAttribute) { 
    { 
    $destinationObject->$destinationAttribute = sourceObject->$sourceAttribute; 
    } 
} 

$courseConversationMap = array(
    'id' => 'id', 
    'title' => 'coursetitle', 
    'desc' => 'description', 
    'start' => 'startDate', 
    ... 
); 

$OLAT_course_object = getOLAT_i_dont_know_how_you_do_that(); 
$moodleCourse = new Moodle\Course(); 

fillObject($OLAT_course_object ,$moodleCourse ,$courseConversationMap); 

이제 conversationMaps를 정의하고 그 논리를 팩토리 메소드에 넣으십시오. 그러면 지정된 OLAT 객체를 반복하고 팩토리 생성 메소드를 호출합니다. 두려워하지 마십시오. 로켓 과학이나 뇌 수술이 아닙니다 .-

그런 다음 PHP XML Library to convert said classes to XML을 사용하고 파일에 XML 개체를 작성하십시오.

귀하의 변환기는 매우 재사용 할 수 있으며 쉽게 SomethingElse2Moodle 변환기를 자료에 쓸 수 있습니다.

+0

이미 모든 OLAT 데이터가 들어있는 객체가 있습니다. OLAT 객체의 getter를 사용하여 새로운 무들 객체에 작성한 다음 새 객체를 사용하여 새로운 무들 객체에 작성한 다음 쉽게 사용할 수 있습니다. 폴더 구조를 만드시겠습니까? – Axon

+0

공장 설계 패턴을 확인하십시오. 기본적으로 속성 맵을 사용할 수 있습니다. 여기서 대상 속성의 소스 속성을 정의합니다. 그에 따라 내 게시물을 업데이트 할 것입니다. –

+0

고마워요, 이것은 많은 도움이되었습니다. 나는 이것이 나를 위해 훨씬 더 쉽고 명확하게 만들 것이라고 생각한다. +1 (충분한 담당자가있는 경우) – Axon