를 사용합니다.리팩토링 XML_Unserializer 의존 클래스는 내가이 XML 파일을 취하는 클래스가있는 DOMDocument
Array
(
[language] => en-US
[meta] => <title></title>
[pagecontent] => Array
(
[class] => test
)
그런 다음 배열의 키 값을 반환하는 메서드가 있습니다. 예를 들어 언어를 원한다면 $class->getData('language')
또는 $class->getData('pagecontent:class')
을 사용합니다.
PHP4는 더 이상 지원되지 않으므로 이제는 기본 XML 구현에 의존 할 수 있습니다. 저는 SimpleXML과 표준 PHP DOM 라이브러리 모두에서 일했습니다. 후자는 더 강력하고 유연하며 simpleXML은 특정주의 사항이 있으므로 선호합니다.
unserializer 클래스를 사용했기 때문에 거의 모든 메서드가 foreach
과 같은 함수 메서드와 상호 작용합니다. 배열을 유지하는 것이 가치가 있는지 궁금합니다. 모든 메소드를 리팩토링하지 않아도됩니다. 또한, 다음과 같은 방법을 구현해야하기 때문에 나는 그것이 때로는 요소의 전체 nodeValue를 잡아하는 고통 것을 알고 :
function innerHTML($node){
$doc = new DOMDocument();
foreach ($node->childNodes as $child)
$doc->appendChild($doc->importNode($child, true));
return $doc->saveHTML();
}
을 그리고 그것은 항상 작성하기에 걸쳐 여러 번 그 방법을 사용하여 비효율적 인 것 같습니다 DOMDocument. 아마 메서드를 리팩토링하여 동일한 DOMDocument를 반복적으로 사용하고 조각을 추가 할 수 있지만 잔인한 것으로 보입니다.
표준 DOM 라이브러리를 사용해야하는지 여부와 관련하여 DOM 기능을 사용하거나 배열을 만들고 내 메서드를 그대로 유지하는 모든 메서드를 리팩터링해야하는지 여부에 대해이 방식으로 입력하는 데 감사드립니다. 새로운 버그를 도입 할 확률을 낮추기 위해?
감사합니다.
흠, 이것이 대답에 충분한 지 확실하지 않습니다. 기본적으로, 지금 작동하고 성능 및 유지 관리 문제가 없으면 그대로 둘 수 있습니다. 어쨌든 리팩토링을 시도하기 전에 UnitTests가 있는지 확인해야합니다. UnitTests는 코드를 변경할 때 새로운 버그가 발생할 위험을 크게 낮 춥니 다. – Gordon
우리의 개발자들은 XML_Unserializer/PEAR에 대해 불평하고 있습니다. 그래서 요청은 PHP5 고유의 메소드를 사용하도록되어 있습니다. –