Eclipse PDT 入門
================================================================================
■ Eclipse
製品版 統合開発環境(IDE)と同等の充実した開発機能
無償 / 商用利用可能 (CPL, Common Public License)
豊富なプラグイン
軽快な動作
さまざまな開発言語をサポート
IDE は、ソースコードの入力以外に、ファイル管理、バージョン管理、入力時のコードの
補完、コンパイル、ビルドなど、ソースの作成以外に必要な開発作業をサポートするアプ
リケーション。
■ PDT - PHP Developer Tools
PDT (PHP Developer Tools) は、Eclipse をベースとした PHP の IDE。
PDT の開発は Zend 社。
Zend Debugger と組み合わせることで、ステッブバイステップによる実行やブレイクポイ
ントを設定、ブレイク時に変数の値をウオッチ、構成中のレスポンスのウオッチなどの操
作ができる。
PDT Project
PHP Development Tools
http://www.eclipse.org/pdt/
■ Eclipse PDT のインストール
□JavaSDK のダウンロードとインストール
JavaSDK1.4 以前の場合は、JavaSDK5.0 以上をダウンロードとインストールする。
Java SE Downloads
http://java.sun.com/javase/ja/6/download.html
JDK 6 Update 10
jdk-6u10-linux-i586.bin
□PDT のダウンロード
次のサイトから PDT をダウンロードする。
http://downloads.zend.com/pdt/all-in-one/
pdt-2.0.0.S20081102_debugger-5.2.14.v20080602-all-in-one-linux-gtk.tar.gz
バージョンとして、1.0.3 と 2.0.0 があるが、2.0.0 は JavaSE5.0 以上でないと動作し
ない。
なお、Eclipse の PDT のサイトからダウンロードすると、デバッガーを別に設定しなけ
ればならないので面倒。この Zend のサイトからならば、あらかじめデバッガーもインス
トール済。
□解凍
ダウンロードしたものは、ホームディレクトリの Desktop にあるので、それをコピーし
て、解凍すると、ホームディレクトリ上で eclipse ディレクトリができる。
今後、この eclipse を解凍したディレクトリ (/home/student/eclipse/) を、
$ECLIPSE_HOME とする。
$ tar zxvf Desktop/pdt-2.0.0.S20081102_debugger-5.2.14. (折り返し)
v20080602-all-in-one-linux-gtk.tar.gz
(注) ここでは、student というユーザーで login してるという前提で以後記す。
□日本語化
日本語化パックとして、
http://iij.dl.sourceforge.jp/mergedoc/34234/pleiades_1.2.3.zip
をダウンロードして、$ECLIPSE_HOME に解凍する。
ただし、今のところ、Eclipse 3.4 には対応されていない様子。
□登録
ホームディレクトリにある .bashrc ファイルの最後の行に Eclipse のエイリアスを登録
する。これで、 eclipse コマンドだけで、eclipse を起動できる。
---
alias eclipse='/home/student/eclipse/eclipse &'
---
□php.ini の設定
/etc/php.ini に次の行を追加
---
zend_extension="/home/student/eclipse/plugins/org.zend.php.debug.debugger. (折り返し)
linux.x86_5.2.14.v20080602/resources/php5/ZendDebugger.so"
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always
---
■ PDT
□起動
エイリアスが設定してあれば次のコマンドで起動する。
$ eclipse
Eclipse 起動時に workspace の指定を
/home/student/public_html
にする。
□PHP パースペクティブ
Edipse の画面(パースペクティブ)はいくつかのビューで構成。
これらのビューのセットのことをパースペクティブとよぶ。 Eclipse のデフォルトでは
Java 言語用のパースペクティブが表示されているので、石上のボタンからPHPのパースベ
クティブを選ぶ。
なお、今回の PDT では、デフォルトとして Resources しかないので、
[Window] - [Open Perspective] - [PHP]
として開く必要がある。
□プロジェクトツリー・ビュー
ブロジェクトの一覧を表示
ツリーを展開するとプロジェクト配下のファイル名が表示
lnclude Path などの設定も確認可能
プロジェクト内で PEAR ライブラリや Smarty を利用する場合は、それらのディレクトリ
を lndude Path に追加。これによって、PEAR や Smarty のクラスを利用している場合で
も、コード補完やデバッグが可能になる。
□アウトライン・ビュー
アウトラインビューでは、ソース内に記述されているクラスのアウトライン(プロパティ
やメソッド)が表示
□エディタ・ビュー
PHPのコードを人力するためのビュー
□組み込み関数リスト・ビュー
PHP の組み込み関数のリストが表示。
関数リストから PHP マニュアルを直接参照することができる
ただ、このビューはデフォルトでは表示されていないので、次の手順によってビューを開
く必要がある。
[Window] - [Show View] - [PHP Functions]
■ PDT を使ってみる
□プロジェクトを作り、使ってみる
[File] - [New] - [Project] - [PHP] - [PHP Project] - [Next]
で、プロジェクト名を指定
今回は、「hello」プロジェクトを作る。
[プロジェクト]右クリック - [New] - [PHP File]
で、新規PHPファイル作成
今回は、「hello.php」を作る
内容は、以下のとおり。
メッセージをブラウザに表示する PHP である。
---
echo "こんにちは";
?>
---
□スクリプトで実行する
次の操作で開始する。
[実行ボタンのプルダウン] - [Run As] - [PHP Script]
で、スクリプトとして実行できる。
または、ショートカットで、[Shift+Alt+X H]
[Browser Output]タグで、ブラウザーで表示したイメージ
[Debug Output]タグで、ブラウザーで表示したイメージ
□Eclipse 内のブラウザーで表示する
[Window]メニュー - [Preferences] - [PHP] - [PHP Servers]
で、新規PHPサーバーを作成
[Server] - [Enter the URL that points to the document root of this server]
を以下のように設定
http://localhost/~student
[Run]ボタンのプルダウン - [PHP Web Page] で表示できる
または
Shift+Alt+X W
□独立したブラウザーで表示する
Apacheサーバーを起動する必要がある。
サーバーを起動するには、rootユーザーになる必要がある。
---
$ su -
# service httpd start
httpd を起動中: [ OK ]
---
ブラウザのURL欄に
http://localhost/~student/
を入れると、ファイルリストが出るので、そこの「hello」ディレクトリーをクリックし、
「hello.php」
をクリックする。
■ PDT の機能
□自動コード補完
PHPコード補完
HTML タグ補完
「」を入力すると、適切な終了タグを補完
関数名補完
途中まで入力し、「Ctrl+TAB」(Linuxの場合)または「Ctrl+Space」(Windowsの場合)で関数名の候補リストを出す
□コメント
範囲を選択後、つぎのショートカットで、コメント化
行コメント: Ctrl+/
ドキュメントコメント: Ctrl+Shift+J
□ソースのフォーマット
[Source]メニュー - [Format]
□PHPマニュアル参照
マニュアルのデフォルトは英語版なので、次の手順によって日本語のマニュアルが表示されるようにする。
[Window]メニュー - [Preferences] - [PHP] - [PHP Manual] - [New]ボタン・クリック
で、
[Name] を
PHP.net/jp
[Remote Site (URL)] を次のようにする。
http://www.php.net/manual/jp
そして、[OK]ボタン押下。
Site Name が、今設定した PHP.net/jp であることを確認し、[Default] ボタンを押下する。
□ローカルヒストリ
[対象ソース]右クリック - [Compare With] または [Replace With] - [Local History]
□定義元へジャンプ
要素を選択して F3
□デバッグ
後述
■ PDT によるデバッグ方法
スクリプトによる実行時にデバッグできます。
1. [デバッグ]ボタンのプルダウン - [Run As]で起動
2. パースペクティブを「PHP Debug」に切替え(自動で切り替わるが、切り替えるかどう
かを聞いてくる)
または、ショートカットで、[Shift+Alt+D H]
3. スクリプトの先頭で停止
4. ファンクションキーや、ブレークポイントを使って、必要なところでプログラムを停
止し、変数の値などを確認しながらデバッグする。
F5: ステップイントゥ: 次の行に進み、止まる。このとき、関数を呼び出していれば、そ
の関数の中で止まる。
F6: ステップオーバー: 次の行に進み、止まる。このとき、関数を呼び出していれば、そ
の関数を実行し、戻ったところで止まる。
F7: ステップリターン: 現在の関数から戻り、止まる
◆実習
次のプログラムを参考にして、いろいろと試してみましょう。
□lab1.php
---
require_once("Book.class.php");
?>
$a = 9876;
$b = new Book(123, "PHP");
$c = array(456, "php", 3.14);
$d = array("abc" => 456, 901 => "php");
echo $a . "";
echo $b->getId() . "";
echo $b->getName() . "";
var_dump($b);
echo "";
var_dump($c);
echo "";
var_dump($d);
echo "";
?>
---
□Book.class.php
---
class Book {
private $id;
private $name;
public function __construct($id, $name) {
$this->id = $id;
$this->name = $name;
}
public function getId() {
return $this->id;
}
public function getName() {
return $this->name;
}
}
?>
---
□結果
---
9876
123
PHP
object(Book)#1 (2) { ["id:private"]=> int(123)
["name:private"]=> string(5) "PHP" }
array(3) { [0]=> int(456) [1]=> string(3) "php" [2]=>
float(3.14) }
array(2) { ["abc"]=> int(456) [901]=> string(3) "php" }
---
■セッション
ログインするアプリを作ってみる。
□login.html
---
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="login-1.php" method="POST">
名前: <input type="text" name="login"/>
パスワード: <input type="password" name="password"/>
<input type="submit" value="login"/>
</form>
</body>
</html>
---
□login-1.php
---
session_start();
$login = $_POST["login"];
$password = $_POST["password"];
if (empty($login) || empty($password)) {
print "名前・パスワードが入力されていません。";
session_destroy();
exit();
}
if ($login == 'yamada' && $password == 'himitu') {
print "ログインに成功しました。";
$_SESSION['login'] = $login;
$_SESSION['name'] = "山田";
} else {
print "名前・パスワードが適切ではありません。";
session_destroy();
exit();
}
?>
---
□login-2.php
---
session_start();
if ($_SESSION['login'] == "" || !isset($_SESSION['login'])) {
print "ログインされていません。";
session_destroy();
exit();
} else {
print "正常にログインできています。";
print $_SESSION['name'] . "";
print session_id();
}
?>
---
□login-3.php
---
session_start();
session_destroy();
print "ログアウトしました";
?>
---
■Smarty
PHP プロジェクト「smarty1」を作る。
プロジェクト内に、つぎの2つのフォルダーを作る。
templates
templates_c
PDT のデバッガーでは、テンプレートのデバッグはできない。
□smarty1.php
---
require_once("/usr/share/Smarty/libs/Smarty.class.php");
$tpl = new Smarty;
$var_name = "maruno";
$var_email = "maruno@example.net";
$tpl->assign("name", $var_name);
$tpl->assign("email", $var_email);
$tpl->display("smarty1.tpl");
?>
---
□smarty1.tpl
---
<html>
<body>
{$name} さんのメールアドレスは {$email}
</body>
<html>
---
■ 参考 URL
Eclipse PDT (PHP Development Tools) - Q&A?
http://hp.vector.co.jp/authors/VA000137/phpide/qanda.html
以上