Open Source Web Development Tutorials - Dev Shed
PHPのデバッグにX-debugを使おう
(2009/03/19公開)
xdebug_call_line()関数の使用
前のセクションで述べたように、X-debug拡張機能には「xdebug_call_line()」という別の便利な関数があり、メソッド、関数、ステートメントが起動された行番号を返します。
この関数の動作を示すため、前に説明したサンプルの「User」クラスのシグネチャを変更し、「xdebug_call_line()」関数を使って新しい「getLine()」メソッドを実装します。
「Users」クラスの変更されたシグネチャは次のとおりです。
class User{
private $firstName;
private $lastName;
private $email;
public function __construct($firstName,$lastName,$email){
if(!$firstName){
throw new Exception('Invalid parameter First Name.');
}
if(!$lastName){
throw new Exception('Invalid parameter Last Name.');
}
if(!$email){
throw new Exception('Invalid parameter Email.');
}
$this->firstName=$firstName;
$this->lastName=$lastName;
$this->email=$email;
}
// get first name
public function getFirstName(){
return $this->firstName;
}
// get last name
public function getLastName(){
return $this->firstName;
}
// get email
public function getEmail(){
return $this->email;
}
// get line from which this method was called
public function getLine(){
return 'Called from line '.xdebug_call_line();
}
}
「User」クラス内に定義された「getLine()」メソッドが、どのように「xdebug_call_line()」関数を使って、問題のメソッドが呼び出された行をクライアントコードへ返すかが明確に示されています。
複雑に見えるかもしれませんが、実際には複雑ではありません。次のサンプルコードを見れば、「xdebug_call_line()」関数の動作が明確に理解できるでしょう。
try{
$user=new User('John','Doe','john@domain.com');
echo $user->getLine();
/* displays the following
Called from line 40
*/
}
catch(Exception $e){
echo $e->getMessage();
exit();
}
サンプルクラス内で「xdebug_call_line()」関数を活用するのは、ごく簡単であることが理解いただけると思います。この例では、関数は「getLine()」メソッドが呼び出された行を返します。単純な機能ですが、便利です。
もちろん、この関数はデバッグの目的で使うにはやや原始的です。しかし、前に説明した「xdebug_file_call()」関数と組み合わせると、スクリプトの動作についてより詳しい情報が得られます。さまざまな条件でこれらの関数がどのように動作するのか、試してみてください。
結論
今回は連載の第1回として、X-debug PHP拡張機能をインストールし、PHPスクリプトのデバッグに使ういくつかの単純な方法を簡単に紹介しました。最初に述べたように、この拡張機能は構成と使用が容易で、プログラムの初心者から上級者まで利用できる機能を備えています。
次回以降の記事では、X-debugを使って、PHPスクリプトの実行中に呼び出される関数を管理する方法について説明します。
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.








