今回はモジュール関連の違いについて解説します。PHP5ではXML関連モジュールの入れ替えや新しいXML関連モジュールのデフォルト化など、
特に記述がない場合、
XML関連の違い
PHP4もXML関連のモジュールが用意されていました。PHP4とPHP5で互換性があるXML関連モジュールはSAXパーサとXML RPCモジュールで、
機能 | PHP4 | PHP5 |
---|---|---|
SAXパーサ | XML Parser | XML Parser |
DOM関数 | DOM_ | DOM |
XSLT変換 | XSLT | XSL |
XML RPC関数 | XML_ | XML_ |
SOAP関数 | N/ | SOAP |
libxml関数 | N/ | libxml |
簡易XML文書アクセス | N/ | SimpleXML |
XMLプルパーサ | N/ | XMLReader |
サービスデータオブジェクト | N/ | SDO |
XML Data Access Service for Service Data Objects | N/ | SDO XML Data Access Service |
PHP5は簡単にXML文書にアクセスできるSimpleXMLなど、
DOM関数
DOM
関数 | 機能 |
---|---|
DomDocument->create_ | Create new comment node |
DomDocument->create_ | Create new element node with an associated namespace |
DomDocument->create_ | Create new element node |
DomDocument->create_ | Create an entity reference |
出典:PHPマニュアル
関数 | 機能 |
---|---|
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モジュールで互換性があります。
このように、
SXLT変換
XSLTサポートモジュールはPHP4とPHP5では大きく変更されています。PHP4のXSLTサポートモジュール
PHP4のXSLTモジュールのAPIは関数で提供されいます。PHP5ではオブジェクト指向プログラミングサポートの向上の一環としてXSLモジュールのAPIはクラスとして提供しています。ベースとなっているライブラリも異なりAPIも異なっているので、
関数 | 機能 |
---|---|
xslt_ | Returns the information on the compilation settings of the backend |
xslt_ | Returns the name of the backend |
xslt_ | Returns the version number of Sablotron |
xslt_ | Create a new XSLT processor |
xslt_ | Returns an error number |
xslt_ | Returns an error string |
xslt_ | Free XSLT processor |
xslt_ | Get options on a given xsl processor |
xslt_ | Perform an XSLT transformation |
xslt_ | Set the base URI for all XSLT transformations |
xslt_ | Set the encoding for the parsing of XML documents |
xslt_ | Set an error handler for a XSLT processor |
xslt_ | Set the log file to write log messages to |
xslt_ | Sets the object in which to resolve callback functions |
xslt_ | Set SAX handlers for a XSLT processor |
xslt_ | Set the SAX handlers to be called when the XML document gets processed |
xslt_ | Set Scheme handlers for a XSLT processor |
xslt_ | Set the scheme handlers for the XSLT processor |
出典:PHPマニュアル
関数 | 機能 |
---|---|
XSLTProcessor->__ | Creates a new XSLTProcessor object |
XSLTProcessor->getParameter() | Get value of a parameter |
XSLTProcessor->hasExsltSupport() | Determine if PHP has EXSLT support |
XSLTProcessor->importStylesheet() | Import stylesheet |
XSLTProcessor->registerPHPFunctions() | Enables the ability to use PHP functions as XSLT functions |
XSLTProcessor->removeParameter() | Remove parameter |
XSLTProcessor->setParameter() | Set value for a parameter |
XSLTProcessor->transformToDoc() | Transform to a DOMDocument |
XSLTProcessor->transformToURI() | Transform to URI |
XSLTProcessor->transformToXML() | Transform to XML |
出典:PHPマニュアル
PHP本体に付属するモジュール違いのまとめ
PHP5のモジュールはPHP4のモジュールとかなり異なっています。PECLに移動したモジュールなどが多くあります。次の表はPHP4からPHP5のモジュールの違いのまとめた表になります。モジュール名はPHPマニュアルと同じ表記ではなく、
PHP5で削除またはPECLに移動したモジュール
モジュール | 移動先 |
---|---|
com | COM dotnetが代替モジュール |
cpdf | CPDF PECLへ移動 |
crack | Crack PECLへ移動 |
cyrus | Cyrus PECLへ移動 |
db | Db PECLへ移動 |
dbx | Dbx PECLへ移動 |
dio | DIO PECLへ移動 |
domxml | DOMXML PHP5では動作しない |
filepro | FilePro PECLへ移動 |
fribidi | Fribidi PECLへ移動 |
hwapi | Hyperwave API PECLへ移動 |
hyperware | Hyperware PECLへ移動 |
infomix | Informix PECLへ移動 |
ingres_ | Ingress II PECLへ移動 |
ircg | IRC Gateway PECLへ移動 |
java | Java 代替モジュールなし |
mcal | MCAL 代替モジュールなし |
mcve | MCVE PECLへ移動 |
mnogosearch | mnoGoSearch PECLへ移動 |
msession | Mohawk Software Session Handler PECLへ移動 |
notes | Lotus Notes PECLへ移動 |
oracle | Oracle oci8が代替モジュール |
overload | 機能がPHP5本体に吸収されました |
PDF PECLへ移動 | |
pfpro | Verisign Payflow Pro PECLへ移動 |
qtdom | Qt DOM PECLへ移動 |
swf | Shackwave Flash PECLへ移動 |
w32api | W32api PECLへ移動 |
xslt | XSLが代替モジュール |
yaz | YAZ PECLへ移動 |
yp | YP/ |
PHP5から追加されたモジュール
モジュール | 機能 |
---|---|
dotnet | .NET COMモジュールの代替 |
dom | DOM DOMXMLモジュールの代替 |
filter | Filter |
hash | Hash |
json | JSON |
libxml | LibXML |
mysqli | MySQL Improved |
pdo | PHP Data Object |
reflection | Reflection API |
simplexml | SimpleXML |
soap | SOAP |
spl | Standard PHP Library |
sqlite | SQLite |
tidy | Tidy |
xmlreader | XML Reader |
xmlwriter | XML Writer |
xsl | xlstの代替モジュール |
移行時に注意が必要な関数
以下の関数はPHP4とは異なる動作をします。
関数 | 機能 |
---|---|
strrpos | needleが最初の1文字でなく文字列全体がニードルとなる。不正なオフセットでNoticeエラーが発生する。 |
strripos | needleが最初の1文字でなく文字列全体がニードルとなる。不正なオフセットでNoticeエラーが発生する。 |
strtotime | 失敗した場合の戻り値が-1ではなくFALSEを返す。タイムゾーンエラーでE_ |
array_ | 引数が配列型のみを受け付けるように変更された。 |
get_ , get_ , get_ | クラス、 |
ip2long | 不正なIPアドレスが渡された場合、 |
include_ , require_ | A. |
getrusage | 不正なパラメータが渡された場合、 |
mb_ | offsetパラメータが追加され、 |
pg_ , pg_ , mysql_ | 接続パラメータが追加された |
エラーイベント
PHP4と比べ、
これらのエラーの多くはバグやパラメータのチェック不足で発生すると思われますが、
まとめ
特にPHP4でXML関連の操作を行うアプリケーションを構築している場合、
PHP5はソースディストリビューションに含められていた多くのモジュールをPECLに移動しています。モジュールの違いはPHP5へ移行する場合の最も大きな障害となるケースも多いので注意が必要です。
次回はセキュリティに関連した変更を紹介します。