PHPのis_a()が非推奨エラーメッセージ吐く件
PHPでXML_RPCを使ってRSSフィードの更新ping打つ処理を書いたりすると、XML_RPCが内部で多用しているis_a()メソッドが非推奨だとエラーメッセージをゴリゴリ吐きます。
こういった問題にはerror_reporting()のメッセージ出力を一時的に無効にして対応するようです。
<?php require_once('XML/RPC.php'); class HogeHogeHttpUtil { function rss_ping($title, $top_url) { // 一時的にStrict Standards エラーメッセージ抑止 $er = error_reporting(); if( ($er & E_STRICT) == E_STRICT ) { error_reporting($er ^ E_STRICT); } // 以降、Strict Standards エラーの出る処理 $servers = array( array( 'server' => 'http://ping.bloggers.jp', 'path' => '/rpc/', ), array( 'server' => 'http://rpc.reader.livedoor.com', 'path' => '/ping', ), array( 'server' => 'http://blogsearch.google.com', 'path' => '/ping/RPC2', ), ); $param = array( new XML_RPC_Value($title,'string'), new XML_RPC_Value($top_url,'string') ); $msg = new XML_RPC_Message('weblogUpdates.ping',$param); foreach( $servers as $k => $v ) { $client = new XML_RPC_Client($v['path'],$v['server'],80); if( ! $client->send($msg) ) { print 'XML RPC send ERROR : '.$v['server']."\n"; } } // 処理終わって、エラーメッセージ抑止モードからの戻し error_reporting($er); } } ?>
確認した環境は以下です。*1
%php -version PHP 5.2.9 (cli) (built: May 8 2009 17:43:26) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies %pear list | grep XML_RPC XML_RPC 1.5.1 stable
*1:さくらサーバ・スタンダードプラン