今回はモジュール関連の違いについて解説します。PHP5ではXML関連モジュールの入れ替えや新しいXML関連モジュールのデフォルト化など,XML関連で大きく変わっています。ほかにもPECLプロジェクトに移動されソースディストリビューションに含まれなくなったモジュール,廃止されたモジュールなどもあります。これらについて解説します。
特に記述がない場合,PHP4はPHP4.4.x,PHP5はPHP5.2.xを意味します。
XML関連の違い
PHP4もXML関連のモジュールが用意されていました。PHP4とPHP5で互換性があるXML関連モジュールはSAXパーサとXML RPCモジュールで,ほかのモジュールは互換性がありません。PHP5では同じ機能を提供する別のモジュールが用意されていたり,新しいインターフェースが用意されています。
| 機能 | PHP4 | PHP5 |
|---|---|---|
| SAXパーサ | XML Parser | XML Parser |
| DOM関数 | DOM_XML | DOM |
| XSLT変換 | XSLT | XSL |
| XML RPC関数 | XML_RPC | XML_RPC |
| SOAP関数 | N/A | SOAP |
| libxml関数 | N/A | libxml |
| 簡易XML文書アクセス | N/A | SimpleXML |
| XMLプルパーサ | N/A | XMLReader |
| サービスデータオブジェクト | N/A | SDO |
| XML Data Access Service for Service Data Objects | N/A | SDO XML Data Access Service |
PHP5は簡単にXML文書にアクセスできるSimpleXMLなど,XML機能が強化されています。しかし,PHP4とPHP5のXML機能には大きな違いがあるので移行には困難を伴うケースも多いと思います。ここでは違いの概要を解説しています。詳しくはPHPマニュアルを参照してください。
DOM関数
DOM(DocumentObjectModel)はXMLドキュメントへのアクセス仕様であるため,モジュールが提供するAPIは似てはいますが,互換性はありません。しかし,DOM API自体は言語に依存しないAPI定義であるため,関数名を変えるだけで同じ動作をするものも多くあります。
DOM XMLモジュール関数(PHP4)
| 関数 | 機能 |
|---|---|
DomDocument->create_comment | Create new comment node |
DomDocument->create_element_ns | Create new element node with an associated namespace |
DomDocument->create_element | Create new element node |
DomDocument->create_entity_reference | Create an entity reference |
出典:PHPマニュアル
DOMモジュール関数(PHP5)
| 関数 | 機能 |
|---|---|
DOMDocument->createComment() | Create new comment node |
DOMDocument->createDocumentFragment() | Create new document fragment |
DOMDocument->createElement() | Create new element node |
DOMDocument->createElementNS() | Create new element node with an associated namespace |
DOMDocument->createEntityReference() | Create new entity reference node |
出典:PHPマニュアル
定数名はDOMとDOM XMLモジュールで互換性があります。
XML_ELEMENT_NODE
XML_ATTRIBUTE_NODE
XML_TEXT_NODE
XML_CDATA_SECTION_NODE
このように,DOMとDOM XMLモジュールで同じ名前の定数を同じ意味で利用しています。DOM関数を利用していてもPHP4からPHP5への移行はそれほど困難ではないと思います。

