marunomaruno-memo

marunomaruno-memo

Eclipse PDT 入門

2008年12月10日 | PHP
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


以上


最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
Unknown (cypher256)
2008-12-10 13:22:31
Pleiades が動かないというのはまったく日本語にならないという感じですか?
configuration/jp.sourceforge.mergedoc.pleiades/pleiades.log か
$HOME/.eclipse/<インストールしたディレクトリ名>/pleiades.log
にエラーが出力されていますか?

コマンドで起動したときに標準出力に何か出ていますか?

あと、eclipse のログ
<ワークスペース>/.metadata/.log
に何かエラーが出ていますか?
返信する

コメントを投稿